裁剪大jpeg

bri*_*kly 0 c++ jpeg crop large-files

有一个任务,编写一个将文件作为一个JPEG文件的程序.但问题是一些jpeg文件有大尺寸 - 数百兆字节.所以问题是:是否可以裁剪jpeg文件,但不使用像fseek()这样的东西将所有文件加载到RAM中,只解码所需的部分.

那可能吗?如果是的话,也许有些图书馆会这样做.

UPD.所有这些都将用于深度变焦技术.因此,当深度缩放将要求文件时,该程序将提供它,但这应该是实时的

Mar*_*som 5

有两种方法可以实现这一目标.

第一种是无损裁剪,您不会一直解码文件,而是使用8x8 DCT块.您需要使用具有此功能的库,并且它会对裁剪能力施加一些限制.您无法裁剪到不在DCT方格上的边界,这会将您限制为8或16的倍数,具体取决于文件中的子采样.

第二种方法是使用一个允许您一次读写一行的库.我知道IJG库可以做到这一点,也可能是其他人.这是一种简单的方法,但缺点是图像经过减压/再压缩传递并且会失去质量和/或变大.