【问题标题】:Resizing JPEG image during decoding在解码期间调整 JPEG 图像的大小
【发布时间】:2010-03-23 22:48:37
【问题描述】:

我正在开发一个动态创建 JPEG 图像缩略图的程序。现在我在想:既然 JPEG 图像是由 8x8 像素块 (Wikipedia has a great explanation) 构建的,是否可以跳过部分解码?

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

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

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

【问题讨论】:

  • libjpeg 已经可以做到这一点,您可以在 ImageMagick 中通过加载之前设置图像大小来使用此功能。

标签: resize jpeg thumbnails decode


【解决方案1】:

我认为djpeg's scale 功能会做这样的事情。

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

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

【讨论】:

  • 正是我想要的,它也在一个获得适当许可的主流库中。谢谢!
【解决方案2】:

根据this answer,来自 Enlightenment 的EPEG 正是这样做的,通过收集 DCT 系数将图像缩小 8 倍。这是current home of EPEG

【讨论】:

  • 我希望我能接受两个答案,但唉,只能有一个。尽管如此,还是投了赞成票。
【解决方案3】:

我正在处理的项目目前使用ImageGen,它可以即时调整各种图像大小 - 如果功能列表与您想要的匹配,这可能会收回成本。否则,我猜您正在寻找对图像实施有损文件压缩,必须之前已经完成了!

【讨论】:

    猜你喜欢
    • 2012-07-30
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多