Opm*_*met 3 memory jpeg imaging codec libjpeg-turbo
我刚刚从http://jpegclub.org/jpegtran/下载了最新的win32 jpegtran.exe并观察了以下内容:
我准备了一个24 BPP jpeg测试图像,14500 x 10000像素.
在无损旋转期间监视jpegtran.exe命令行工具的内存消耗(180)我可以看到消耗高达900 MB内存的进程!
我会假设这样的jpeg无损转换不需要将图像文件解码到内存中,而只是对编码文件本身执行一些数学转换 - 保持内存占用非常低.
那以下哪项是真的?
编辑:
根据JasonD的回答,原因似乎是后者.所以我会延伸我的问题:
是否有任何实现可以在小块中执行这些操作(以避免高内存使用)?还是总是需要在整体上完成而且没有办法绕过它?
PS:
我不打算实现自己的编解码器/算法.相反,我问是否有任何实现符合我的要求.或者至少在理论上是否存在.
我不知道有问题的库,但为了在jpeg图像上执行无损旋转,你至少必须解压缩DCT系数才能旋转它们,然后重新压缩.
完全展开的DCT系数将与原始图像数据具有相同的尺寸或更大,因为它们具有更多的信息位.
它是无损的,因为jpeg中的损耗是由DCT系数的量化引起的.只要您不对这些进行解码/重新编码/重新量化,就不会产生任何损失.
但它将是内存密集型的.
jpeg压缩的工作原理大致如下:
因此,"无损"转换会希望避免尽可能多地做 - 尤其是除了DCT量化之外的任何事情,但这并不能避免扩展数据.
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |