流式Jpeg Resizer

时间:2009-09-15 21:20:14

标签: resize jpeg

有没有人知道任何进行流式Jpeg调整大小的代码。我的意思是读取一块图像(取决于显然会改变的原始源和目标大小),并调整大小,允许在调整非常大的jpeg时减少内存消耗。显然这对渐进式jpeg不起作用(或者至少它会变得更复杂),但标准jpeg应该是可能的。

2 个答案:

答案 0 :(得分:2)

JPEG数据的设计允许简单地调整大小为1/2,1 / 4或1/8。其他变化是可能的。对于渐进式jpeg,这些相同的大小缩减也很容易,如果想要缩小图像,要在渐进式文件中解析的数据量会少得多。除此之外,你的问题不够具体,无法知道你真正想做什么。

将数据大小减少33%的另一个简单方法是将图像渲染为RGB565位图而不是RGB24(如果不需要全色空间)。

答案 1 :(得分:2)

我不知道一个可以现成的库,但它肯定是可能的。

假设您的JPEG使用的是8x8像素MCU(像素分组的单位)。让我们说你减少了12到1的因子。第一个输出像素需要是输入图像左上角12x12像素块的平均值。要获得y坐标大于8的输入像素,您需要解码第二行MCU的开始。在解码整个第一行MCU之前,你无法真正解码这些像素。实际上,这可能意味着您需要存储两行已解码的MCU。尽管如此,对于12000x12000像素的图像(大约150万像素),您可以将内存需求降低12000/16 = 750.这对PC来说应该足够了。如果你正在研究嵌入式使用,你可以在阅读时水平调整MCU行的大小,将内存需求减少12倍,代价是代码复杂度增加。

我会找到一个简单的jpeg解码器库,如Tiny Jpeg Decoder,并查看jpeg解码函数中的主循环。在Tiny Jpeg Decoder的情况下,主循环从那里调用decode_MCU,Modify。 : - )

如果你想减少一个无整数因子,你需要做一些繁琐的工作来使代码适用于非8x8 MCU,并且负载更多。听起来很有趣。祝你好运。