在obj-с
中,如何获得存储在自定义UIImage
中的某个NSMutableArray
的大小?这是我想要做的第一件事。第二个是,知道图像的文件大小(比如15 MB)比我自己的文件大小限制(比如它的5 MB)更大,如何压缩图像最接近文件大小限制,比如4.99 MB?
答案 0 :(得分:15)
我在stacj溢出链接的另一个问题上看到了这个 - image compression by size - 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);
}
一种方法是在循环中重新压缩文件,直到找到所需的大小。你可以先找到高度和宽度,并猜测压缩系数(更大的图像更多的压缩),然后压缩后,检查大小,然后再次分割差异。
我知道这不是超级高效,但我不相信只有一个电话来实现特定尺寸的图像。