上传时压缩图像

时间:2013-11-22 10:17:51

标签: ios image compression

我想在服务器上传图片。 但在上传之前,我想压缩该图像,然后上传到服务器。我不想上传超过2 MB的图像。 我已经使用了这个逻辑,但如果图像大小很大,那么它就不会运行。在处理期间,循环和占用的内存增加到1 gb。

 double compressionRatio=1;
 NSData *imgData=UIImagePNGRepresentation(proImage.image,compressionRatio);
   while ([imgData length]>50000) {
    compressionRatio=compressionRatio*50;
    imgData=UIImageJPEGRepresentation(proImage.image,compressionRatio);
   }

1 个答案:

答案 0 :(得分:0)

请查看UIImageJPEGRepresentation documentation

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);

compressionQuality = 0.0; ... max compression
compressionQuality = 1.0; ... min compression

您可以尝试以下方式:

NSData *imgData=UIImagePNGRepresentation(proImage.image,compressionRatio);

if ([NSData length] > maxSizeThatYouWant) {

    CGFloat compressionNeeded = (CGFloat)[NSData length]/(CGFloat)maxSizeThatYouWant;

    imgData=UIImageJPEGRepresentation(proImage.image,compressionNeeded);
}