问题
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