【发布时间】:2012-06-25 01:34:57
【问题描述】:
对于任何给定的文件数据大小,我希望能够调整(或压缩) UIImage 的大小以适应该数据限制。这个问题不是关于如何调整大小或如何检查文件大小的问题......它是关于一种以高性能方式获得它的算法。
已经在这里搜索,我找到了this thread,它谈到了以线性或二进制算法降低图像 jpeg 质量。这不是很高效,最多需要几十秒。
我在 iOS 上工作,因此图像可以接近 10MB(来自 iPhone 4S)。我的目标虽然可变,但目前是 3145728 字节。
我目前正在使用UIImageJPEGRepresentation 进行一点压缩,但要达到我的低目标,对于这么大的照片,我似乎不得不损失很多质量。 UIImage 大小和NSData 大小之间有关系吗?是否有一些功能可以让我说:
area * X = dataSize
...求解一个比例因子,以便我可以一次性调整大小?
【问题讨论】:
-
使用 JPEG 压缩,它肯定取决于图像的性质,即具有大量高频信号(即锐边)的图像会比没有的图像大。因此,如果不实际执行压缩,将很难提前知道。
-
有一个好的大致估计吗? png呢?
-
即使使用 PNG,它也将取决于图像的性质。我猜图像大小为 10MB,您正在处理照片或自然图像 - 而 PNG 将是非常垃圾的。我能想到的唯一可以提前知道大小的格式是 BMP 或类似的未压缩格式。但是你当然会失去压缩的好处。
-
如何使用不同尺寸的非常复杂的样本图像设置预先计算的基准。您可以获取不同场景的压缩比大致数据,并将它们用作需要压缩和调整大小的指南。
标签: ios optimization uiimage compression nsdata