Compress image at the time of uploading

别来无恙 提交于 2019-12-11 14:14:50

问题


I want to upload image on server. But before uploading i want to compress that image and then upload to server. I dont want to upload image more than 2 mb. I have used this logic but if image size is to large then it runs no. of loops and also occupied memory increased to 1 gb during processing.

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

回答1:


Please take a look at UIImageJPEGRepresentation documentation.

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

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

You could try something like:

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

if ([NSData length] > maxSizeThatYouWant) {

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

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


来源:https://stackoverflow.com/questions/20142358/compress-image-at-the-time-of-uploading

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!