对于任何给定的文件数据大小,我希望能够调整(或压缩)UIImage以适应该数据限制。这个问题不关于如何调整大小,或者如何检查文件大小...这是一个以高效的方式获得此算法的算法。
在这里搜索,我发现this thread谈到了以线性或二进制算法降低图像jpeg质量。这不是很有效,最多需要几十秒钟。
我在iOS上工作,因此图片可以接近10MB(来自iPhone 4S)。我的目标虽然是变量,但目前是3145728字节。
我目前正在使用UIImageJPEGRepresentation
来压缩一点,但是为了达到我的低目标,似乎我必须为这么大的照片丢失很多质量。 UIImage
尺寸和NSData
尺寸之间是否存在关系?是否有一些功能,我可以说:
area * X = dataSize
...并解决比例因子,以便我可以一次调整大小?
答案 0 :(得分:1)
在查看您链接到的主题后,我刚才有了一个想法:压缩10MB图像会相对较慢。如何调整大小(使压缩更快),然后执行压缩算法(从链接)。这可以用作压缩10MB图像大小的指南吗?这个想法是同一图像的压缩比应该相似,与大小无关。
假设压缩的1000x1000像素为10MB,目标大小为3MB。
然后说较小的100x100像素(例如),以相同的质量压缩, C MB。然后在100x100图像上执行二进制搜索alg,直到size = C *(3/10)。然后使用此压缩质量为1000x1000图像获得~3MB图像。
注意:我不知道这有多好用 - 这只是一个建议。选择什么尺寸(我使用100x100)来拍摄较小尺寸的图像也只是猜测,需要进行一些实验。