压缩UIImage但保持大小

时间:2011-11-13 14:20:24

标签: ios image-processing

我尝试使用UIImageView来显示照片。但照片有时候有点大,我想压缩它。但我想保持它的大小。 例如,照片为4M,大小为320X480。我想压缩它,它可能有1M,但仍然有320X480的大小。

谢谢!

2 个答案:

答案 0 :(得分:18)

使用JPEG压缩对其进行压缩。

lowResImage = [UIImage imageWithData:UIImageJPEGRepresentation(highResImage, quality)];

质量介于0.0和1.0之间

你应该阅读UIImage documentation,一切都在那里解释......

答案 1 :(得分:3)

如果你的目标是让图片低于特定的数据长度,那么很难猜出你需要什么样的压缩比,除非你知道源图像总是一定的数据长度。这是一个简单的迭代方法,它使用jpeg压缩来实现目标长度......让我们说1MB,以匹配问题:

// sourceImage is whatever image you're starting with

NSData *imageData = [[NSData alloc] init];
for (float compression = 1.0; compression >= 0.0; compression -= .1) {
    imageData = UIImageJPEGRepresentation(sourceImage, compression);
    NSInteger imageLength = imageData.length;
    if (imageLength < 1000000) {
        break;
    }
}
UIImage *finalImage = [UIImage imageWithData:imageData];

我已经看到一些方法使用while循环来压缩图像.9或其他任何东西,直到达到目标大小,但我认为你正在失去图像质量和处理器通过连续压缩/重构图像来循环。此外,这里的for循环更安全一些,因为它在尝试最大可能的压缩(零)后自动停止。