2011-06-02 30 views
1

我在磁盤上有一個不太正常的JPEG文件 - 這個JPEG文件在圖像尾端(FFD9)後面附加了額外的垃圾數據。雖然這個JPEG文件仍然可以由JPEG查看器打開。在C++中無損處理JPEG

我希望刪除圖像結尾(FFD9)後面的附加信息。約束條件是:

  1. 必須通過程序來完成
  2. 必須是無損
  3. 必須使用本地代碼,例如C++

我發現的一種方法是使用IrfanView命令行工具重新保存文件,使用無損JPG_TRANSFORM的命令:/ jpg_rotate。後面的附加數據會自動刪除。

但是,還有另一種方法可以在C++代碼中完成它,如果可能的話,我不希望使用像IrfanView這樣的exes來完成它。我希望盡一切努力來保持精益。

我在考慮檢測文件結束(FFD9),然後將EOF前的緩衝區保存到另一個JPEG中。但是,我怎樣才能無損地保存緩衝區?

+4

如果您只是簡單地複製比特位幷包括EOF標記,那麼對此有什麼損失? – 2011-06-02 03:47:25

回答

3

我想這是一個文件處理問題,而不是圖像處理相關。

您只需將圖像文件中的所有數據寫入EOF,然後將其寫入生成的圖像文件中。