2012-01-16 89 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