Internet Explorer, png i gamma

26.02.2009 @ 23:46:22 by Rafał Kozik | webdev .NET C#

Kiedyś podczas testowania strony w IE okazało się, że pojawił się bardzo dziwny błąd -- obrazy zapisane w plikach png i plikach jpg miały inne odcienie.

Layout został pocięty na mniejsze części i w zależności od zawartości zapisywałem je w odpowiednim formacie (większość grafik przygotowuję w Paint.net). Niestety okazało się, że rezultaty są dziwne:

Obrazek

Bardzo prymitywnym rozwiązaniem było przerobienie wszystkiego na tylko jeden format, ale przez pewien czas się sprawdziło. Przyszedł jednak taki moment, że potrzebowałem nałożyć obraz z przezroczystym tłem (png) na główne tło (jpg) i trzeba było rozwiązać problem.

Jak się okazało, problemem jest chunk gAMA, który jest zapisywany przez Paint.net w plikach png. W GIMP-ie możemy po prostu go nie zapisać i wszystko będzie poprawnie. Nie wiem jednak jak jest w przypadku pozostałych programów graficznych. Chunk ten jest też dodawany gdy zapisujemy obraz w .NET metodą Bitmap.Save, której prawdopodobnie Paint.net używa.

Jeśli mamy już "felerne" pliki, to rozwiązanie jest bardzo proste -- wystarczy pobrać program TweakPNG, a w nim z plików png usunąć chunka gAMA. Zawsze można też otworzyć plik w GIMPie i zapisać bez niego ;)




Komentowanie zostało tymczasowo wyłączone.