压缩UIImage但保持大小

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

谢谢!

使用JPEG压缩进行压缩。

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

质量在0.0到1.0之间

你应该阅读UIImage文档 ,一切都在那里解释…

如果您的目标是让图像低于特定的数据长度,则很难猜测出您需要的压缩比率,除非您知道源图像始终是特定的数据长度。 这里有一个简单的迭代方法,使用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循环来压缩图像的方法,直到满足目标大小为止,但是我认为通过连续压缩/重构图像会损失图像质量和处理器周期。 另外,这里的for循环更安全一些,因为它在尝试最大可能的压缩(零)后会自动停止。