2016-08-09 219 views
5

Ich muss ein Bild von CMYK in RGB in Python konvertieren. Ich benutzte Kissen auf diese Weise:Konvertierung von CMYK zu RGB mit Kissen unterscheidet sich von der von Photoshop

img = Image.open('in.jpg') 
img = img.convert('RGB') 
img.save('out.jpg') 

Der Code funktioniert, aber wenn ich das gleiche Bild mit Photoshop konvertieren Ich habe ein anderes Ergebnis wie folgt: -

a

Die einzige Operation durchgeführt In Photoshop ist die Methode von CMYK zu RGB zu ändern. Warum gibt es diesen Unterschied zwischen den beiden RGB-Bildern? Es kann ein Farbprofilproblem sein?

+0

JGG-Bilder verwenden immer [YCbCr] (https://en.wikipedia.org/wiki/YCbCr) als [Farbformat] (https: //en.wi kipedia.org/wiki/JPEG#Encoding) also ist diese Konvertierung überflüssig - es sieht so aus, als ob photoshop das weiß und das Bild nicht berührt, aber das Kissen komprimiert naiv das Bild normalerweise beim Speichern (Hinzufügen von Kompressionsartefakten) – janbrohl

+2

Auch Kissen nimmt möglicherweise keinen eingebetteten [ICC-Profil] (https://en.wikipedia.org/wiki/ICC_profile) berücksichtigt, um die Farben des Bildes ein wenig zu verändern. – janbrohl

Antwort

6

GELöST

Das Problem ist, dass Kissen nicht das ICC-Eingabeprofil kennen, während Photoshop einen Satz als Standard hatte.

Photoshop Verwendung für

CMYK: US Web Coated (SWOP) v2

RGB: sRGB IEC61966-2.1

Also habe ich auf diese Weise gelöst:

img = Image.open('in.jpg') 
img = ImageCms.profileToProfile(img, 'USWebCoatedSWOP.icc', 'sRGB Color Space Profile.icm', renderingIntent=0, outputMode='RGB') 
img.save('out.jpg', quality=100)