0%

图片压缩笔记

图片压缩笔记

压缩方法

工程里图片压缩方法过程:传入一张图片,压缩后,再转回图片.加上上传到服务器的整个过程如下:
UIImage-大力压缩->NSData(A)->UIImage-UIImageJPEGRepresentation(img, 1)->NSData(B)->服务器.

测试发现dataB要比dataA大很多很多.导致实际上传给服务器的数据远远不止600kb.eg某次上传的头像:4.56Mb(原图,压缩前)->579.16kb(压缩后)->2.93Mb(实际上传).实际上传的数据是2.93Mb

因此再转回UIImage是多余且错的.而应该压缩后直接上传服务器,即UIImage-大力压缩->NSData(A)->服务器.

正确的压缩方法为:

1
2
3
4
5
6
7
8
9
10
11
//指定压缩阈值,压缩图片
+ (NSData *)za_compressImage:(UIImage *)image toMaxFileSize:(NSInteger)maxFileSize {
CGFloat compression = 0.9f;
CGFloat minCompression = 0.1f;
NSData *imageData = UIImageJPEGRepresentation(image, compression);
while ([imageData length] > maxFileSize && compression > minCompression) {
compression -= 0.05;
imageData = UIImageJPEGRepresentation(image, compression);
}
return imageData;
}
觉得文章有帮助可以打赏一下哦!