图片压缩笔记
压缩方法
工程里图片压缩方法过程:传入一张图片,压缩后,再转回图片.加上上传到服务器的整个过程如下:
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; }
|