UIView / UIImage 截圖(capture), 縮放(scale), 設定大小(resize), 儲存(save)
2012-07-30 16:19
519 查看
寫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就開放了
另外儲存到手機的圖片庫裡, 必須在實機使用, 模擬器無法使用
沒了這三樣還能叫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就開放了
另外儲存到手機的圖片庫裡, 必須在實機使用, 模擬器無法使用
相关文章推荐
- UIView / UIImage 截圖(capture), 縮放(scale), 設定大小(resize), 儲存(save)
- UIView / UIImage 截圖(capture), 縮放(scale), 設定大小(resize), 儲存(save)
- UIView / UIImage 截图(capture), 缩放(scale), 设定大小(resize),储存(save)
- 图片的处理大概分 截图(capture), 缩放(scale), 设定大小(resize), 存储(save)
- 图片的处理大概就分 截图(capture), 缩放(scale),设定大小(resize), 存储(save)
- 图片的处理大概分 截图(capture), 缩放(scale), 设定大小(resize), 存储(save)
- IOS常用第三方框架 --- UIImage+Resize 调整图片大小
- uiimageview设置contentMode为ScaleAspectFill后显示的不是view的大小而是图片的大小了
- UIImage图片处理:截图,缩放,设定大小,存储原文:图片的处理大概分截图(capture),缩
- 【翻译】用正确的方法改变图片大小(Resize a UIImage the right way)
- uiimage缩放图片大小和属性UIViewContentModeScaleAspectFit
- UIView+Extension方便在开发时快速修改视图的位置大小
- Resize a UIImage the right way
- iOS 学习日志:重绘UIImage 改变大小
- OpenCV学习笔记:resize函数改变图像的大小
- uicollectionview 使用uibutton或者uiimageview实现旋转出现scale的问题
- 如何截取UIImage指定大小区域
- UIView 转化为 UIImage,将UIImage 保存到沙盒中
- 改变UIImage的大小
- UIImageView 图片自适应大小