将UIImage压缩到某个大小(以兆字节为单位)

Ser*_*yov 6 iphone cocoa-touch objective-c inversion-of-control uiimage

obj-?一个人如何获得一定的大小UIImage存储在一个自定义的NSMutableArray?这是我想要做的第一件事.第二个是,知道图像的文件大小(比如15 MB)比我自己的文件大小限制(比如它的5 MB)更大,如何压缩图像最接近文件大小限制,比如4.99 MB?

ksh*_*ara 16

我已经在stacj溢出链接的另一个问题上看到了这个 - 按大小的图像压缩 - iPhone SDK

但我确实从那里结合了两个答案,我也使用这个代码进行压缩.

CGFloat compression = 0.9f;
CGFloat maxCompression = 0.1f;
int maxFileSize = 250*1024;

NSData *imageData = UIImageJPEGRepresentation(yourImage, compression);

while ([imageData length] > maxFileSize && compression > maxCompression)
{
    compression -= 0.1;
    imageData = UIImageJPEGRepresentation(yourImage, compression);
}
Run Code Online (Sandbox Code Playgroud)

一种方法是在循环中重新压缩文件,直到找到所需的大小.您可以首先找到高度和宽度,并猜测压缩系数(更大的图像更多压缩)然后压缩后,检查大小,然后再次分割差异.

我知道这不是超级高效的,但我不相信有一个单一的调用来实现特定大小的图像.