Zdradzieckie DPI w plikach PNG

03.09.2009 @ 12:29:41 by Rafał Kozik | .NET C# grafika

Biblioteka GDI+ stara się być czasami sprytniejsza niż byśmy tego chcieli i podczas rysowania uwzględnia informację o DPI zawartą w pliku (jest to chunk pHYs), co czasami może przełożyć się na dziwne rezultaty. Jak dziwne? Weźmy jedną grafikę i narysujmy ją z DPI 72, 96 i 300, efekt jest taki:


Obrazek

Może się przez to okazać, że nasze narzędzia generujące grafiki będą dawać dziwne rezultaty. Na dodatek standardowo używane jest DPI z ustawień systemu (standardowo 96), które użytkownik naszego narzędzia może mieć zmienione.

Niektóre narzędzia przetwarzające obrazy zapisują błędnie informację o DPI, o czym przekonałem się parę dni temu, gdy 1/3 grafik testowych (które sam kiedyś tworzyłem) miała złe DPI.

Jak można temu zaradzić? Jako, że nas będą interesować tylko piksele, możemy zmienić DPI wczytanego obrazu za pomocą metody SetResolution i tak samo zrobić dla obrazu, który generujemy -- dzięki temu wszystkie będą miały takie samo DPI i problem powinien zniknąć.




Komentarze

2009-09-16 @ 11:01:57

Masz rację, mnie też bardzo zaskoczyła obsługa PNG w .NET. ;) Co ciekawe, z programów które używałem, tylko Gimp zapisywał złe DPI.
Komentowanie zostało tymczasowo wyłączone.