如何判斷 JPEG 是否儲存為漸進式?

如何判斷 JPEG 是否儲存為漸進式?

我收到了一組攝影師寄來的照片,需要確認 JPEG 沒有儲存為漸進式 JPEG。我有 Adob​​e Bridge 和 Photoshop — 如何檢查?

答案1

一些簡單的方法:

  1. 圖像魔術師— 在命令列上執行:
    identify -verbose mystery.jpg | grep Interlace
    輸出將為「Interlace:JPEG」或「Interlace: None」。
  2. Photoshop- 開啟檔案。選擇File -> Save for Web & Devices
    如果是漸進式 jpeg,則會選取漸進式核取方塊。
  3. 任何瀏覽器— 基線 jpeg 將從上到下加載,漸進式 jpeg 將執行其他操作。如果檔案載入太快,您可能需要新增頻寬限制。我在 Mac 上使用 ipfw。

來源

程序化方法

查看檢測漸進式 JPEG。作者發布了人們開發的許多腳本的連結:

可以使用幾個識別位元組來識別文件。基於逐行 DCT 的 JPEG 可以透過位元組「0xFF、0xC2」來識別。此外,漸進式 JPEG 影像通常包含多次掃描,因此您可以尋找幾個「掃描開始」匹配項(位元組:「0xFF、0xDA」)。作者使用了一個簡單的 Bash 指令來獲得準確的結果:

>grep -c -P “xffxc2″ progressive1.jpg
>1

>grep -c -P “xffxc2″ progressive2.jpg
>1

>grep -c -P “xffxc2″ baseline1.jpg
>0

>grep -c -P “xffxc2″ baseline2.jpg
>0

>grep -c -P “xffxDA” progressive1.jpg
>6

>grep -c -P “xffxDA” progressive2.jpg
>12

該連結還包含許多其他有用的工具。

更新

劇情變得更加複雜(感謝用戶 PussInBoots 提醒我深入挖掘)。問題是如何判斷 JPEG 是否為已儲存作為進步。

  • 「另存為」似乎具有靈活的意義。我進行了實驗,發現在某些情況下,保存為逐行掃描意味著僅更改元資料參數(交錯),但文件實際上並未更改為包含逐行掃描。因此,該檔案包含單一影像,渲染軟體被告知將其視為漸進式影像。

    這些「假」漸進式文件在上述測試中的表現方式:

    • 伊納吉克: Interlace 參數讀取為“JPEG”而不是“None”。

    • Photoshop: 我唯一可用的 Photoshop 版本是舊版(7.0 版)。在「另存為 Web」對話框中,Progressive已預先選取這些檔案的複選框,但未選取標準 JPEG。

    • 瀏覽器: 我的系統和網路連線速度太快,無法進行有用的測試。在正常情況下,一切都足夠接近瞬時,無法可靠地區分任何差異。

    • 辨識位元組: 這似乎是一個更可靠的指標。 「假冒」漸進式 JPEG 不具有任何辨識位元組模式。

  • 因此,對於最初的問題,如果上面的任何測試表明該文件是不是漸進式 JPEG,但您可以相信它不是漸進式 JPEG。然而,上面的「簡單方法」似乎無法可靠地區分真正的漸進式 JPEG 和「假」JPEG,因此您不能依賴它們來了解 JPEG 是否真的很有進步。事實上,PussInBoots 在評論中報告說,Photoshop CS6 似乎有一個預設選項“漸進式”,因此它的初始設定不會告訴您任何有關現有文件的資訊。

答案2

如果您使用的是 unix,請使用以下file命令:

$ file image.jpg

image.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=0], progressive, precision 8, 2000x1200, components 3

答案3

對於子孫後代來說,有一個更簡單的方法。只需使用 Irfanview 進行檢查即可。點選圖像->資訊。

使用 Irfanview 檢查 Jpeg 屬性

相關內容