iOS图片压缩

2018-11-14  本文已影响0人  iOS_tree

最近发现用户下载自己上传的图片比较耗时,检测发现是上传的原始图片过大,于是寻找降低图片数据大小的方法。

发现以下方法:

UIKIT_EXTERN  NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality);  // return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)

该方法可以把UIImage对象转换为JPEG图片格式,返回NSData对象。函数有两个参数,一个为UIImage对象,一个为压缩质量,取值为0-1。压缩大小取决于压缩质量参数,质量越小,返回的NSData数据越小。

该方法在不改变图片的分辨率的情况下降低图片的大小。对PNG格式的图片非常适用。

该方法上还有一个方法为返回PNG格式图片的二进制数据的方法:

UIKIT_EXTERN NSData * __nullable UIImagePNGRepresentation(UIImage * __nonnull image); // return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format

使用时要注意,在UIImage对象没有CGImageRef属性或者没有可用的bitmap格式时使用该方法会返回nil。

如果要改变图片的分辨率来缩小图片占空间的大小,则可以使用图片绘制功能进行缩放,具体方法如下:

UIGraphicsBeginImageContext(size);

[image drawInRect:CGRectMake(0, 0, size.width, size.height)];

resultImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

各函数方法说明如下:

//开启图片绘制上下文,参数为要绘制图片的大小

UIKIT_EXTERN void UIGraphicsBeginImageContext(CGSize size);

//UIImage的绘制方法,把图片绘制到指定上下文中,参数为指定绘制的区域

- (void)drawInRect:(CGRect)rect; // mode = kCGBlendModeNormal, alpha = 1.0

//取出绘制好的图片,图片分辨率为开启上下文时设置的大小

UIKIT_EXTERN UIImage* __nullable UIGraphicsGetImageFromCurrentImageContext(void);

//关闭图片上下文

UIKIT_EXTERN void     UIGraphicsEndImageContext(void);

上一篇下一篇

猜你喜欢

热点阅读