IOS中修改图片的大小:修改分辨率和裁剪
2015-07-09 18:11
417 查看
在IOS开发中,经常有限制图片文件大小的,有的用户图片很大,导致上传时间慢,造成问题。
如:微信分享中,如果图片的大小好像大于50kbytes,就分享失败,而且没有任何提示。
所以,我添加了两个函数:
一、修改当前图片的大小,newSize是新的size尺寸,这个方法帮助用户获取到更小的图片。
但是这个newSize的尺寸建议跟原图一样,不然图片就变形了。
- (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
// Create a graphics image context
UIGraphicsBeginImageContext(newSize);
// Tell the old image to draw in this new context, with the desired
// new size
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Get the new image from the context
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
// End the context
UIGraphicsEndImageContext();
// Return the new image.
return newImage;
}
二、截图功能,实现用户想要截取图的RECT
- (UIImage *)getImageByCuttingImage:(UIImage *)image Rect:(CGRect)rect{
//大图bigImage
//定义myImageRect,截图的区域
CGRect myImageRect = rect;
UIImage* bigImage= image;
CGImageRef imageRef = bigImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
CGSize size;
size.width = rect.size.width;
size.height = rect.size.height;
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, myImageRect, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
return smallImage;
}
如:微信分享中,如果图片的大小好像大于50kbytes,就分享失败,而且没有任何提示。
所以,我添加了两个函数:
一、修改当前图片的大小,newSize是新的size尺寸,这个方法帮助用户获取到更小的图片。
但是这个newSize的尺寸建议跟原图一样,不然图片就变形了。
- (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
// Create a graphics image context
UIGraphicsBeginImageContext(newSize);
// Tell the old image to draw in this new context, with the desired
// new size
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Get the new image from the context
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
// End the context
UIGraphicsEndImageContext();
// Return the new image.
return newImage;
}
二、截图功能,实现用户想要截取图的RECT
- (UIImage *)getImageByCuttingImage:(UIImage *)image Rect:(CGRect)rect{
//大图bigImage
//定义myImageRect,截图的区域
CGRect myImageRect = rect;
UIImage* bigImage= image;
CGImageRef imageRef = bigImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
CGSize size;
size.width = rect.size.width;
size.height = rect.size.height;
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, myImageRect, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
return smallImage;
}
相关文章推荐
- iOS property 用法
- IOS Protocol与Delegate详解(二)
- IOS版本被拒的经历
- 基于IOS上MDM技术相关资料整理及汇总
- IOS设备MDM证书申请流程
- [iOS]ARC下循环引用的问题
- IOS内存管理浅析
- iOS开发:Toast for iPhone 实例分享
- iOS公司开发者账号申请(详细申请记录2015-07-09)
- IOS ARC 和 非ARC 之间的转换方法
- ios项目(十五)
- IOS开发中滑动页面时NSTimer停止的问题
- iOS学习之iOS沙盒(sandbox)机制和文件操作(二)
- ios基本语法
- iOS画线
- iOS应用内购买报错:invalidProductIdentifiers
- 自定义iOS列表索引控件
- 【iOS开发系列】性能优化建议和技巧
- iOS编程 摇一摇 震动
- iOS流媒体开发的资料