【问题标题】:How to add JPEG comments to an existing JPEG image file如何将 JPEG 注释添加到现有的 JPEG 图像文件
【发布时间】:2013-10-17 19:35:56
【问题描述】:

有没有办法使用 libjpeg 将 JPEG cmets(“COM”标记)添加到现有的 JPEG 图像文件?

当然可以这样做,首先将现有图像解压缩到内存缓冲区,然后使用 jpeg_write_marker( ... JPEG_COM ... ) 再次压缩原始图像以添加 cmets,然后保存到磁盘。除非需要先解压,否则这样做似乎有点过头了。

【问题讨论】:

  • 为什么要关闭?似乎是一个有效的问题。

标签: c++ c libjpeg


【解决方案1】:

有一个名为wrjpgcom 的工具,它是libjpeg 的一部分。我认为它可以满足您的需求。也许你可以通过它的source 看看它是如何完成的。

【讨论】:

  • 谢谢。不幸的是,wrjpgcom 所做的正是我们试图避免的事情,即复制原始图像(“...生成一个新的 JPEG/JFIF 文件...”)。这就是我上面所说的“矫枉过正”的意思......理想情况下,我们希望对现有图像进行“就地”修改以设置 JPEG 注释。
  • @alexg,它似乎没有重新压缩 jpeg,它只是重写了块以剥离旧的 cmets 并用新的 cmets 替换它们。这看起来是一种正常的做法。应该足够快并且没有质量损失。
  • 同意,它不会重新压缩,只是复制。考虑到标记在文件中的长度不是固定的,因此无法执行就地修改。非常感谢您的解决方案!
【解决方案2】:

你可以在写输出文件的过程中使用jpeg_write_marker()设置好后写注释。然后,使用jpeg_read_coefficients()jpeg_write_coefficients()(代替普通的jpeg_read_scanlines()jpeg_write_scanlines())读取和写入原始压缩数据,而无需实际解压缩和重新压缩。

请参阅libjpeg documentation 中的“真正的原始数据:DCT 系数”部分。请务必阅读其中提到的所有注意事项。

【讨论】:

  • 我们不能使用这种技术,因为 JPEG 图像是由另一个组件“提供”给我们的......
  • 文档链接已损坏;我猜这是相同的文档? opensource.apple.com/source/tcl/tcl-87/tcl_ext/tkimg/tkimg/…
  • @ChrisMaes:谢谢,是的,那是一样的;我将链接更新为较新的版本,该版本在未来不太可能中断(希望如此)。
【解决方案3】:

有人可能会使用由 Mwisoft 创建的 JPEG 评论编辑器。它使用 Windows 自动添加/编辑 JPEG cmets,而不是右键单击 JPEG 文件并单击属性以手动添加 cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多