UIView / UIImage 截圖(capture), 縮放(scale), 設定大小(resize), 儲存(save)

本文介绍iOS应用中图片处理的方法,包括等比缩放、自定义尺寸调整、特定视图截图及图片保存等实用技巧。

转载:http://hi.baidu.com/%B0%D9ii%D6%AAi%B5%C0/blog/item/04bfba11799d5cc5f6039e41.html

寫iOS App我最怕遇到的三樣處理, 大概就是1.影音, 2.網路 3.圖片
沒了這三樣還能叫App嗎? 大概是我coding功力不夠吧
今天來講講圖片的處理...

圖片的處理大概就分這幾樣了截圖(capture), 縮放(scale),設定大小(resize), 儲存(save)
這幾樣比較好處理, 另外還有濾鏡, 擦拭等, 以後再說
在這個Demo code裡, 我寫了幾個方法

1.等比率縮放
- (UIImage *)scaleImage:(UIImage *)imagetoScale:(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;
}

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

3.處理某個特定View
只要是繼承UIVIEW的object 都可以處理
必須先importQuzrtzCore.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;
}

4.儲存圖片
儲存圖片這裡我分成儲存到app的文件裡, 儲存到手機的圖片庫裡
儲存到app
NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"image.png"];
[UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];
這樣就把你要處理的圖片, 以image.png這個檔名存到app home底下的Documents目錄裡

儲存到手機圖片庫裡
CGImageRef screen = UIGetScreenImage();
UIImage* image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
UIGetScreenImage()原本是private(私有)api, 用來截取整個畫面
不過SDK 4.0後apple就開放了
另外儲存到手機的圖片庫裡, 必須在實機使用, 模擬器無法使用


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值