7

obj-с如何获得UIImage存储在自定义中的某个大小NSMutableArray?这是我想做的第一件事。第二个是,知道图像的文件大小(比如 15 MB)大于我自己的文件大小限制(比如 5 MB)如何将图像压缩到最接近文件大小限制,比如 4.99兆?

4

1 回答 1

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

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

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

于 2013-09-19T16:49:45.637 回答