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