压缩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
循环更安全一些,因为它在尝试最大可能的压缩(零)后会自动停止。