2012-01-16 92 views
4

如何从头开始创建UIImage。具体来说,我想创建一个大小为320x50的UIImage。然后,我希望能够在该图像上绘制特定颜色的多边形。创建特定大小的UIImage

+0

您可以使用Quartz Graphics轻松绘制图像。如果我理解正确,你只是想在图像上绘制一些东西?那么在Quartz Graphics中,您可以在绘制图像后完成Quartz Graphics绘制的绘制图像的顶部。你可能应该看看那个;) – 2012-01-16 08:37:34

回答

5

这里的结果创建UIImage是你stitch picture in iphone

和基础上我的经验一个答案,我可以给你一些注意事项:

Propotional规模

 
- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize 
{ 
UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize,image.size.height*scaleSize); 
[image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height *scaleSize)]; 
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return scaledImage; 
} 

调整大小

 
- (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize 
{ 
UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height)); 
[image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)]; 
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return reSizeImage; 
} 

处理特定视图

您哈瓦导入QuzrtzCore.framework第一

 
-(UIImage*)captureView:(UIView *)theView 
{ 
CGRect rect = theView.frame; 
UIGraphicsBeginImageContext(rect.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[theView.layer renderInContext:context]; 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return img; 
} 

处理一系列表格图像

 
CGRect captureRect = yourRect 
CGRect viewRect = self.view.frame; 
UIImage *viewImg; 
UIImage *captureImg; 

UIGraphicsBeginImageContext(viewRect.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[self.view.layer renderInContext:context]; 
viewImg = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

captureImg = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(viewImg.CGImage, captureRect)]; 

保存图像

保存在应用

 
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"image.png"]; 
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES]; 

保存在相册

 
CGImageRef screen = UIGetScreenImage(); 
UIImage* image = [UIImage imageWithCGImage:screen]; 
CGImageRelease(screen); 
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil); 
+0

感谢您的广泛响应,但我不确定这些东西的意思,例如“处理范围表单图像”......我可以使用哪一个简单地做一些像UIImage * newImage = [oldImage drawPolygonOnOldImage :多边形]; – CodeGuy 2012-01-16 19:57:24

2

您可以:

  1. 使用颜色/像素/尺寸创建CGBitmapContext /等你将需要。
  2. 使用上下文或直接操作像素。
  3. 使用CGBitmapContextCreateImage
+1

你可以展示如何做到这一点的具体细节? – CodeGuy 2012-01-17 04:09:47