在C ++中无损操纵JPEG

时间:2011-06-02 03:43:02

标签: c++ image image-manipulation jpeg file-manipulation

我在磁盘上有一个JPEG文件并不常见 - 这个JPEG文件在图像结束(FFD9)后面附加了额外的垃圾数据。 JPEG图像仍可以打开此JPEG文件。

我希望删除End Of Image(FFD9)背后的其他信息。约束是:

  1. 必须以编程方式完成
  2. 必须是无损的
  3. 必须使用原生代码,例如C ++
  4. 我发现的一种方法是使用IrfanView命令行工具重新保存文件,使用无损JPG_TRANSFORM命令:/ jpg_rotate。后面的附加数据会自动删除。

    但是,有没有其他方法可以在C ++代码中执行它,如果可能的话,我不希望使用像IrfanView这样的exes来做到这一点。我希望在代码中做所有事情以保持精益。

    我正在考虑检测文件结束(FFD9),然后将EOF之前的缓冲区保存到另一个JPEG中。但是,我怎么能无损地保存缓冲区?

1 个答案:

答案 0 :(得分:3)

我想这是一个文件处理问题而不是图像处理相关。

您需要将所有数据写入图像文件中的EOF,直到生成的图像文件。