2010-10-14 10 views
7

Etwas rätselt mich - warum erscheint this image in jedem Browser anders?Cross-Browser Inkompatibilitäten bei der Decodierung von JPEG-Dateien?

Bild in IE9 (und Windows Photo Viewer):
Image in IE9

Bild in Firefox (und Photoshop):
Image in Firefox

Bild in Chrome (und Irfanview):
Image in Chrome

Was passiert in ihren Decodierungsprozessen des JPEG, um die letztendliche Ausgabe so anders zu machen?

(Sehen Sie es in IE, Firefox, Chrome etc. zu sehen, was ich meine.)

+0

In Chrome sieht das jetzt anders aus;) – Joey

Antwort

2

JPEG können in RGB oder CMYK codiert werden. Diese Nischen treten normalerweise auf, wenn es CMYK ist. Öffnen Sie die Datei in einem Bildbearbeitungsprogramm und speichern Sie sie als RGB-JPEG und grüßen Sie die CMYK-Drucker, die nun die anderen Ergebnisse haben, die Sie zuvor im Browser hatten.

+0

Dieser scheint nach Photoshop zumindest als RGB kodiert zu sein. –

+0

Wie auch immer, kopieren Sie es in ein neues Bild und speichern Sie es. Das löst wahrscheinlich dein Problem. Wenn nicht, versuchen Sie ein anderes Grafikprogramm. –

+0

Es ist in Ordnung, es ist kein Problem, mehr nur eine Kuriosität :) Danke für Ihre Antwort! –

1

Ich rate nur.
Wenn das Bild erstellt wurde, um diese Unterschiede zu zeigen, ist es vielleicht kein normales Bild, das codiert wurde, sondern ein ungültiges Bild, bei dem die berechneten Farben außerhalb des Bereichs von 0 bis 255 liegen und verschiedene Decoder diese unterschiedlich handhaben.

+0

Dies scheint sinnvoll zu sein, da es scheint, dass es eine sehr begrenzte Auswahl an Farben zeigt und einzelne Pixel in den 8x8 Blöcken unterscheidet. –

1

Wenn Sie beispielsweise in Photoshop das Farbprofil dieses bestimmten Bildes von CMYK nach sRGB ändern, wird es mehr oder weniger gleichmäßig in allen Browsern angezeigt.

+0

Interessant, ich wusste nicht, dass das einen Unterschied machen würde. Photoshop gibt jedoch an, dass dieses Bild ein RGB-Farbraum und nicht CMYK ist. –

+0

Als ich zuerst dein Bild heruntergeladen habe (http://imgur.com/UNZTe.jpg), schwöre ich, dass es CMYK in meinem Photoshop war :-). Wenn Sie es speichern und dann mit Browsern testen, wird es wieder normal angezeigt. PS: Meine Antwort scheint ähnlich zu sein wie die der Quandarys, die 5 Minuten vor meiner waren. – bogatyrjov

6

JPEGSnoop (Quelle jetzt verfügbar @ sourceforge) berichtet große Luma-Überlauf, bevor wir sogar Y'CbCr zu RGB-Konvertierung bekommen. Ich bekomme diese Fehler bei einigen anderen Dateien, aber der Überlauf ist typischerweise klein - 256 oder 257 gegenüber einem Maximum von 255. Die hier berechnete Luma ist 729!

JPEGsnoop des Autors Kommentare zu YCC Überlauf:

YCC Ausschnitt in DC - Jede MCU hinzufügt oder subtrahiert von der DC (Durchschnitt) Wert in der vorherigen MCU. Diese sollten alle bleiben in einem 8-Bit-Bereich, aber Korruption in der DC-Koeffizient kann bewirken, dass dieser Wert aus Bereich wandern. Diese Art von Fehler verursacht plötzliche großflächige Farbveränderungen oder Helligkeit in Ihrem Bild. Da dieser Typ Fehler wird in der Regel nicht wiederherstellen, JPEGsnoop wird nur die ersten 10 dieser in der Protokolldatei melden.

war ich mit dem inter-MCU DC nicht vertraut, aber Pennebaker & Mitchel concur.

*** Decoding SCAN Data *** 
    OFFSET: 0x00000160 
    Scan Decode Mode: Full IDCT (AC + DC) 

    Scan Data encountered marker 0xFFD9 @ 0x00027CA9.0 

*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 729, 109, 171) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 682, 109, 172) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 741, 109, 173) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 629, 109, 174) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 841, 109, 175) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 319, 109, 176) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 928, 109, 177) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 624, 109, 177) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 1, 0) YCC=( 785, 107, 171) Y Overflow @ Offset 0x00027CA8.2 
*** NOTE: YCC Clipped. MCU=( 1, 0) YCC=( 559, 107, 171) Y Overflow @ Offset 0x00027CA8.2 
    Only reported first 10 instances of this message...