http://blog.csdn.net/braver_smile/article/details/40893279
UIGraphicsBeginImageContext創建了一個基於位圖的上下文,並將其設置爲當前上下文(context).
Void UIGraphicsBeginImageContext(CGSize size);
Void UIGraphicsBeginImageContextWithOptions(CGSizesize, BOOL opaque, CGFloat scale); //opaque透明開關,如果圖形完全不用透明,設置YES優化位圖存儲;scale縮放因子
UIImage處理
1, 等比縮放
-(UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize{
UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize, image.size.height * scaleSize); //scaleSize爲縮放比例, 創建基於位圖的圖形上下文
[image drawInRect:CGRectMake(0, 0, image.size.width*scaleSize, image.size.height *scaleSize )];//繪圖
UIImage *scaledImage =UIGraphicsGetImageFromCurrentImageContext();
//獲得圖片
UIGraphicsEndImageContext();
//從當前堆棧中刪除quartz2D繪圖環境
return scaledImage; //返回縮放後的圖片
}
2, 自定義大小
-(UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)resize {
//創建基於位圖的圖形上下文
IGraphicsBeginImageContext(CGSizeMake(resize.width, resize.height));
[image drawInRect:CGRectMake(0, , 0, resize.width, reSize.height)];
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();//從當前堆棧中刪除quartz2D繪圖環境
return reSizeImage
}
3, 存儲圖片
3.1存儲到app文件中
NSString *path =[[NSHomeDirectory()stringByAppendingPathComponent:@”Documents”] stringByAppendingPathComponent:@”image.png];
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
3.2存儲到手機的圖片庫中
CGImageRef screen =UIGetScreenImage(); //截取整個Screen
UIImage *image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil); //寫到手機圖片庫
4, 對於特定UIView的截屏
-(UIImage *)captureView:(UIView *)theView
{
CGRect rect = theView.frame;
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *img= [UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
5, 截取指定區域
//方法一: 使用的200*200的圖片,截取的是左上角
-(UIImage *)getImageFromImage{
//大圖bigImage
//定義myImageRect,截圖的區域
CGRect myImageRect = CGRectMake(0, 0, 100, 100);
UIImage* bigImage= [UIImage imageNamed:@"1.jpg"];
CGImageRef imageRef = bigImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef,myImageRect);
CGSize size;
size.width = 100.0;
size.height = 100.0;
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, myImageRect, subImageRef);
UIImage* smallImage = [UIImageimageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
return smallImage;
}
//方法二
UIImage *image=[UIImage imageNamed:@"1.jpg"];
CGRect rect = CGRectMake(0, 0, 100, 100);//創建矩形框
UIImageView *contentView = [[UIImageView alloc] initWithFrame:rect];
contentView.image=[UIImage imageWithCGImage:CGImageCreateWithImageInRect([imageCGImage], rect)];
6, 合併兩張圖片
- (UIImage*)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {
UIGraphicsBeginImageContext(image1.size);
// Draw image1
[image1 drawInRect:CGRectMake(0, 0, image1.size.width,image1.size.height)];
// Draw image2
[image2 drawInRect:CGRectMake(0, 0, image2.size.width,image2.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}