Ich habe von einem Fotografen eine Reihe von Fotos erhalten und muss bestätigen, dass die JPEGs nicht als progressive JPEGs gespeichert wurden. Ich habe Adobe Bridge und Photoshop – wie kann ich das überprüfen?
Antwort1
Einige einfache Methoden:
- BildMagick– Führen Sie in der Befehlszeile Folgendes aus:
identify -verbose mystery.jpg | grep Interlace
Die Ausgabe lautet entweder „Interlace:JPEG“ oder „Interlace: None“.- Photoshop— Datei öffnen. Auswählen
File -> Save for Web & Devices
.
Handelt es sich um ein progressives JPEG, ist das Kontrollkästchen Progressiv aktiviert.- Jeder Browser— Baseline-JPEGs werden von oben nach unten geladen, progressive JPEGs machen etwas anderes. Wenn die Datei zu schnell geladen wird, müssen Sie möglicherweise eine Bandbreitendrosselung hinzufügen. Ich verwende ipfw auf meinem Mac.
Programmatische Methoden
KasseErkennen von Progressive JPEG. Der Autor veröffentlicht Links zu einer Reihe von Skripten, die andere entwickelt haben:
Zur Erkennung der Dateien können einige Identifikationsbytes verwendet werden. Ein progressives DCT-basiertes JPEG kann durch die Bytes „0xFF, 0xC2“ identifiziert werden. Außerdem enthalten progressive JPEG-Bilder normalerweise mehrere Scans, sodass Sie nach einigen Übereinstimmungen beim „Start of Scan“ (Bytes: „0xFF, 0xDA“) suchen können. Der Autor verwendete einen einfachen Bash-Befehl, um genaue Ergebnisse zu erhalten:
>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
Der Link enthält außerdem zahlreiche weitere nützliche Tools.
Aktualisieren
Die Handlung verdichtet sich (danke an den Benutzer PussInBoots, der mich darauf aufmerksam gemacht hat, tiefer zu graben). Die Frage lautete, wie man erkennt, ob ein JPEGGerettetals progressiv.
„Gespeichert als“ scheint eine flexible Bedeutung zu haben. Ich habe experimentiert und festgestellt, dass in einigen Fällen das Speichern als progressiv nur bedeutete, dass der Metadatenparameter (Interlace) geändert wurde, die Datei jedoch nicht tatsächlich so geändert wurde, dass sie progressive Scans enthielt. Die Datei enthält also ein einzelnes Bild und die Rendering-Software wird angewiesen, es wie ein progressives Bild zu behandeln.
So manifestieren sich diese „falschen“ progressiven Dateien in den oben beschriebenen Tests:
InageMagick: Der Interlace-Parameter lautet „JPEG“ und nicht „Keine“.
Photoshop: Die einzige Version von Photoshop, die ich zur Hand hatte, ist veraltet (Version 7.0). Im Dialogfeld „Für Web speichern“
Progressive
war das Kontrollkästchen für diese Dateien bereits aktiviert, jedoch nicht für Standard-JPEGs.Browser: Mein System und meine Internetverbindung sind zu schnell, als dass dies ein sinnvoller Test wäre. Unter normalen Bedingungen ist alles nahezu augenblicklich, sodass man keinen Unterschied zuverlässig erkennen kann.
Identifizierung der Bytes: Dies scheint ein zuverlässigerer Indikator zu sein. Die „falschen“ progressiven JPEGs hatten keines der identifizierenden Bytemuster.
Also zur ursprünglichen Frage: Wenn einer der oben genannten Tests anzeigt, dass die Dateinichtein progressives JPEG ist, können Sie sich darauf verlassen, dass es das nicht ist. Die oben genannten „einfachen Methoden“ scheinen jedoch nicht zuverlässig zwischen echten progressiven JPEGs und „falschen“ unterscheiden zu können, sodass Sie sich nicht darauf verlassen können, ob ein JPEGIstwirklich progressiv. Tatsächlich berichtet PussInBoots in dem Kommentar, dass Photoshop CS6 anscheinend standardmäßig „progressiv“ ausgewählt hat, sodass die anfängliche Einstellung nichts über die vorhandene Datei aussagt.
Antwort2
Wenn Sie Unix verwenden, verwenden Sie den file
folgenden Befehl:
$ file image.jpg
image.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=0], progressive, precision 8, 2000x1200, components 3