8

我正在开发一个动态创建 JPEG 图像缩略图的程序。现在我在想:既然 JPEG 图像是由 8x8 像素块构建的(维基百科有很好的解释),是否可以跳过部分解码?

假设我的缩略图至少比原始图像小 8 倍。然后,我们可以通过仅包含离散余弦变换的常数项,将输入文件中的每个 8x8 块映射到解码输出中的 1 个像素。大多数图像数据可以立即丢弃,无需处理。此外,内存使用量减少了 64 倍。

我不想从头开始实现它;这很容易需要一周的时间。有没有可以做到这一点的代码?

如果不是,这是因为这种方法不值得,还是仅仅是因为还没有人想到呢?

4

3 回答 3

4

我认为djpeg 的缩放功能就是这样做的。

它可以将 8x8 块缩放到 1 到 16 像素之间的任何大小。

“这很有趣,因为可以直接从 JPEG (DCT) 数据中检索不同的空间大小输出,而无需单独的完整解码和空间重采样。”

于 2010-03-23T14:29:49.843 回答
2

根据这个答案Enlightenment的 EPEG 正是这样做的,通过收集 DCT 系数将图像缩小 8 倍。这里是EPEG 的当前主页

于 2010-03-23T14:39:46.900 回答
0

我正在处理的项目目前使用ImageGen,它可以即时调整各种图像大小 - 如果功能列表与您想要的匹配,这可能会为自己付出代价。否则,我猜您正在寻找对图像实施有损文件压缩,这一定是以前做过的!

于 2010-03-23T14:33:15.487 回答