【问题标题】:Lossless manipulation of JPEG in C++在 C++ 中无损处理 JPEG
【发布时间】:2011-09-06 19:07:20
【问题描述】:

我在磁盘上有一个不太正常的 JPEG 文件 - 这个 JPEG 文件在图像结尾 (FFD9) 后面附加了额外的垃圾数据。不过,JPEG 查看器仍然可以打开此 JPEG 文件。

我希望删除图像结尾 (FFD9) 后面的那些附加信息。约束是:

  1. 必须以编程方式完成
  2. 必须是无损的
  3. 必须使用本机代码,例如C++

我发现的一种方法是使用 IrfanView 命令行工具重新保存文件,使用无损 JPG_TRANSFORM 的命令:/jpg_rotate。后面的附加数据会被自动剥离。

但是,是否有另一种方法可以在 C++ 代码中执行此操作,如果可能,我不希望使用 IrfanView 之类的 exe 来执行此操作。我希望在代码中做所有事情以保持精简。

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

【问题讨论】:

  • 如果您只是简单地将位复制到并包括 EOF 标记,那么这样做会有什么损失?

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


【解决方案1】:

我猜这是一个文件处理问题,与图像处理无关。

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

【讨论】:

    猜你喜欢
    • 2015-03-10
    • 2016-11-18
    • 2014-09-28
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2013-02-07
    • 2013-06-15
    • 1970-01-01
    相关资源
    最近更新 更多