Epa*_*aga 23 cocoa-touch image image-processing objective-c ios
在Mail中,当我添加图像并尝试发送它时,它会快速询问我要将图像发送到哪个尺寸.看截图:

我想在应用程序中做类似的事情,我将上传图像并希望用户在上传图像之前调整图像大小.苹果在这里估算文件大小的最佳方法是什么?
似乎实际创建每个已调整大小的图像需要花费太长时间才能检查它们的大小.有没有更好的办法?
我确实发现这个Apple示例代码有点帮助,但说实话有点压倒性.:)
war*_*enm 13
确定最终压缩图像大小的最大因素不是图像大小或JPEG压缩质量,而是图像复杂度(点亮熵).如果你知道你总是要处理高度详细的照片(而不是纯色场或渐变),那么这会减少沿着这个维度的变化,但......
我花了相当多的时间对这个问题进行数值分析.我采样了一个详细的高分辨率图像的压缩图像尺寸,该图像以9个不同的JPEG质量等级以10个百分点的增量缩小.这产生了描述隐式函数z =(x,y)的三维数据集,其中x是以像素为单位的缩放图像大小(w*h),y是JPEG压缩质量,z是所得图像的大小.以字节为单位
由此产生的表面很难估计.与直觉相反,它具有振荡和多个拐点,这意味着x和y中的2次函数不足以拟合它,并且增加多项式度并创建自定义拟合函数不会产生明显更好的结果.它不仅不是线性关系,甚至不是单调关系.这很复杂.
让我们变得实用.注意当Apple提示您输入图像大小时:当您点击"发送"时,而不是当图像首次出现在邮件撰写视图中时.只要在必须准备好估计的图像大小之前编写消息,就可以使用它们.所以我的怀疑是这样的:他们这样做很难.将图像缩放到不同大小可以在后台进行并行化和执行,即使在iPhone 4-calibur硬件上花费几秒钟,所有这些工作也可以对用户隐藏.如果您担心内存使用情况,可以将图像写入临时文件并按顺序呈现,而不是并行呈现,这将使用不超过内存中未压缩文件内存的~2倍.
总结:除非您对要压缩的图像的预期熵有很多了解,否则对于某些类别的图像,任何估计函数都将非常不准确.如果你可以处理这个问题,那么对某些样本数据进行线性或二次拟合并生成一个用于估算目的的函数是相当容易的.但是,如果你想要像Apple那样接近,你可能需要在后台进行实际的调整大小工作,因为构建一个始终正确的启发式的因素太多了.
| 归档时间: |
|
| 查看次数: |
3753 次 |
| 最近记录: |