題 如何將JPEG JFIF文件轉換為JPEG Exif格式?


我最近把相機的SD卡放在Windows 7 PC上並開始瀏覽它上面的圖片。我注意到有些沒有正確對齊並使用 rotate feature 包含在Windows Photo Viewer中,以便按我的意願查看它們。

我不知道的是 使用旋轉功能時,按下下一個或上一個按鈕時也會覆蓋圖片 導致可能的質量損失(在我看來這是一個壞主意,app應該至少警告用戶在使用這樣的功能時會發生什麼)。

之後,我將SD卡重新插入相機並發生了意外情況:旋轉的圖片無法再預覽。相反,我得到一個黑屏,說“不兼容的JPEG格式”。其他文件(未觸動)仍然正常工作。

為了了解發生了什麼,我從相機中打開了一個JPEG文件,在一個十六進制編輯器中在Windows 7上生成了一個。這是區別:

相機JPEG文件有一個 Exif 標記在其中(與 0xE1 在標題中)。其他JPEG文件(Windows 7)首先有一個 JFIF 標籤,然後是 Exif 標籤(帶 0xE0 在標題中)。

因此,如果我理解得很好,兩者都是JPEG文件,但使用不同的內部格式。

這是我的問題: 是否有可能(使用某種工具)進行轉換 JFIF 文件到 Exif 格式? 

我知道原始的相機文件已被重新編碼,因此失去了一些質量(讓原件回來是不可能的)。我想知道如果將它們從JFIF轉換回Exif(如果可能的話,沒有第二次質量損失......)


2
2017-12-23 12:41


起源


愚蠢的問題,但如果你把它們旋轉回來,他們會表現出來嗎?我在第一次閱讀時的假設是它們不適合相機屏幕,因為我有一台舊相機。如果您拍攝風景照片並將其作為肖像放回,則會出錯。 - Duall
注意,JPEG數據可以旋轉(以90度為增量)並無損地鏡像。我希望Windows Photo Viewer中的旋轉功能可以進行無損旋轉,而無需重新編碼圖像。 - Wyzard


答案:


JPEG標準具有許多由於特定原因而創建的文件合規性變體,經常使用的兩種類型是EXIF和JFIF。

雖然這兩個文件都被歸類為JPEG文件並出現在具有JPEG擴展名的計算機上,但差異是由於在相機或計算機處理期間添加到原始圖像的補充數據。該數據通常存儲在稱為“APPn”的區域中(其中“n”是數字0,1,2等)。

大多數成像軟件應用程序可以打開兩種類型的JPEG文件,但大多數數碼相機只能顯示EXIF格式的圖像。當在Photoshop等成像程序中打開EXIF文件然後保存時,文件將更改為JFIF格式,結果是相機無法再打開圖像並且拍攝數據丟失。

EXIF

EXIF格式創建用於數碼相機,APPn存儲信息,例如記錄圖像時的相機狀態(快門,光圈白平衡等)。

JFIF

JFIF變體通常用於成像行業,大多數軟件應用程序以這種格式保存文件。 JFIF使用APPn存儲諸如版權和字幕(IPTC文本)和用於顏色管理的配置文件信息(icm數據)之類的信息。

你可以試試 ExifTool 並運行此命令,但由於拍攝數據丟失,您的相機可能無法顯示圖像。

exiftool "-exif:all<jfif:all" "-thumbnailimage<jfif:thumbnailimage" FILE


2
2017-12-23 14:18



我試過你說的話,但它沒有解決問題。不管怎麼說,還是要謝謝你。 - tigrou
試試這個命令 exiftool "-exif:all<all" "-thumbnailimage" DIR 這應該修復當前目錄中的所有文件
我嘗試了那個,但沒有解決任何問題。我正在使用實用程序,因為執行命令後該工具寫入“1圖片成功更新”並在磁盤上創建名為“picturexxx.jpg.original”的第二個文件 - tigrou
查看更新的答案
對我來說很棒!謝謝! Photoshop應該修復他們的圖像文件解析器來應對。 - Bruce


來自維基百科文章的兼容性部分 JPEG文件交換格式

較新的可交換圖像文件格式(Exif)與JFIF相當,但這兩個標準互不兼容。這是因為兩個標準都指定它們的特定應用程序段(用於JFIF的APP0,用於Exif的APP1)必須是映像文件中的第一個。在實踐中,許多程序和數碼相機產生包含兩個應用程序段的文件。這不會影響大多數解碼器的圖像解碼,但設計不佳的JFIF或Exif解析器可能無法正確識別文件。

基於以上所述,您可以通過簡單地使用十六進制編輯器移除APP0段/標記並添加APP1段/標記(例如,使用操作Exif數據的其他工具)將JFIF轉換為Exif。或者,您只需添加Exif數據,您仍然可以在大多數程序中打開圖像。


1
2017-10-17 13:51