我想在服务器上传图片。 但在上传之前,我想压缩该图像,然后上传到服务器。我不想上传超过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);
}
答案 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);
}