2012-05-08 18 views
5

używam następujący kod, aby zmienić rozmiar obrazu za pomocą PILZmiana rozmiaru obrazu za pomocą PIL zmienia kolory drastycznie

img = Image.open("in.png") 
resized = ImageOps.fit(img, (200, 200), method=Image.ANTIALIAS) 
resized.save("out.png") 

ale kolory obrazu wyjściowego wyglądać zupełnie inaczej. Oto one dla porównania, ten duży to oryginalna:

enter image description here enter image description here

Co jeszcze dziwniejsze jest to, że kiedy je otworzyć za pomocą przeglądarki obrazów w ubuntu, wyglądają tak samo. Ale nie w systemie Windows ani MacOS.

+1

Kolory wyglądają tak samo dla mnie. To jest z Pythonem 2.x? Występuje taki sam problem, jeśli robisz to z innym formatem obrazu (np. Jpg). – Levon

+1

@Levon: Obraz po prawej stronie jest jaśniejszy i bardziej czerwony. Nie będziesz w stanie powiedzieć bez działającego systemu korekcji kolorów. –

Odpowiedz

3

Większy obraz korzysta z profilu kolorów Adobe RGB. Jest pomijany na mniejszym obrazie, co oznacza, że ​​system korekcji kolorów użyje jakiegoś domyślnego (prawdopodobnie sRGB), który prawdopodobnie ma mniejszą gamę. Spowoduje to, że kolory staną się bardziej tępe.

Rozwiązanie 1: Utwórz oryginalny obraz za pomocą sRGB zamiast Adobe RGB.

Rozwiązanie 2: Skopiuj profil kolorów z większego obrazu do mniejszego obrazu.

Większość systemów Linux nie obsługuje korekcji kolorów, przynajmniej nie w tym samym zakresie, co system OS X lub Windows. Fakt, że wyglądają tak samo w przeglądarce obrazów Ubuntu, jest tak naprawdę ograniczeniem programu do przeglądania obrazów, który nie jest w stanie zrozumieć profili kolorów.

+0

Fajnie, dzięki! jakiś pomysł, w jaki sposób mogę skopiować profil kolorów z jednego obrazu do drugiego? –

+0

Nie mam pojęcia. –

+0

Zmieniłem oryginalny obraz na sRGB i zadziałało! : D –

Powiązane problemy