任何新的位圖繪制代碼是鼓勵(lì)使用UIGraphicsImageRenderer leiu這個(gè)API
UIKIT_EXTERN void? ? UIGraphicsBeginImageContext(CGSize size);
UIKIT_EXTERN void? ? UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) NS_AVAILABLE_IOS(4_0);
UIKIT_EXTERN UIImage* __nullable UIGraphicsGetImageFromCurrentImageContext(void);
UIKIT_EXTERN void? ? UIGraphicsEndImageContext(void);
1.等比縮放
- (UIImage *) scaleImage:(UIImage *)image dengbiScale:(float)dengbiScale {
UIGraphicsBeginImageContext(CGSizeMake(image.size.width * dengbiScale, image.size.height * dengbiScale);
[image drawInRect:CGRectMake(0, 0, image.size.width * dengbiScale, image.size.height * dengbiScale)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
2.自定義大小
- (UIImage *) reSizeImage:(UIImage *)image scaletoSize:(CGSize)scaletoSize {
UIGraphicsBeginImageContext(CGSizeMake(scaletoSize.width, scaletoSize.height));
[image drawInRect:CGRectMake(0, 0, scaletoSize.width, scaletoSize.height)];
UIImage *mySizeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return mySizeImage;
}
3.處理某個(gè)特定的View
-(UIImage*) captureView:(UIView *)tedingView {
CGRect rect = tedingView.frame;
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[tedingView.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
4.儲(chǔ)存圖片(存入到文件夾中)
NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"image.png"];
[UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];
5.儲(chǔ)存到手機(jī)的圖片庫(kù)中
CGImageRef screen = UIGetScreenImage();
UIImage* image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
6.根據(jù)給定得圖片悼瓮,從其指定區(qū)域截取一張新得圖片
-(UIImage *)getImageFromImage{
//大圖bigImage
//定義myImageRect隙疚,截圖的區(qū)域
CGRect myImageRect = CGRectMake(10.0, 10.0, 57.0, 57.0);
UIImage* bigImage= [UIImage imageNamed:@"k00030.jpg"];
CGImageRef imageRef = bigImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
CGSize size;
size.width = 57.0;
size.height = 57.0;
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, myImageRect, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
return smallImage;
}
7. 合并兩張圖片
- (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;
}