上传时压缩图像

我想在服务器上传图片。 但在上传之前,我想压缩该图像,然后上传到服务器。 我不想上传2 MB以上的图片。 我已经使用这个逻辑,但是如果图像尺寸很大,那么它不运行。 的循环,并且在处理过程中也占用了1GB的内存。

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

请看UIImageJPEGRepresentation文档 。

 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); }