我尝试使用UIImageView
来显示照片。但照片有时候有点大,我想压缩它。但我想保持它的大小。
例如,照片为4M,大小为320X480。我想压缩它,它可能有1M,但仍然有320X480的大小。
谢谢!
答案 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
循环更安全一些,因为它在尝试最大可能的压缩(零)后自动停止。