繁体   English   中英

C++中JPEG的无损操作

[英]Lossless manipulation of JPEG in C++

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM