如果你的目标是在具体数据长度以下获取图像,那么就很难猜测你需要什么样的压缩比率,除非你知道来源形象总是一定的数据长度。 这里采取简单易变的办法,用jpeg compression实现指标长度......请说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或以任何方式压缩,但我认为,你通过连续压缩/重造图像,正在失去图像质量和过程周期。 此外,<<>>>>>代号”此处的路段比较安全,因为它在试图尽量压缩后自动停止。