2016-08-09 15 views
5

Мне нужно преобразовать изображение из CMYK в RGB в python. Я использовал подушку таким образом:Преобразование из CMYK в RGB с подушкой отличается от Photoshop

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

код работает, но если преобразовать то же изображение с Photoshop У меня есть другой результат, как показано ниже: -

a

Единственная операция делается в Photoshop необходимо изменить метод с CMYK на RGB. Почему существует разница между двумя изображениями RGB? Это может быть проблема с цветовым профилем?

+0

Изображения Jgeg всегда используют [YCbCr] (https://en.wikipedia.org/wiki/YCbCr) в качестве [цветового формата] (https: //en.wi kipedia.org/wiki/JPEG#Encoding), поэтому это преобразование является излишним - похоже, что фотошоп знает это и не касается изображения, но подушка наивно сжимает изображение, как правило, при сохранении (добавление артефактов сжатия) – janbrohl

+2

Также подушка, возможно, не требует встроенного [Профиль ICC] (https://en.wikipedia.org/wiki/ICC_profile) во многом меняет цвета изображения. – janbrohl

ответ

6

решаемые

Проблема заключается в том, что подушка не знает, входной профиль ICC, а фотомагазин один комплект по умолчанию.

Использование Photoshop для

CMYK: US Web Coated (SWOP) v2

RGB: SRGB IEC61966-2.1

Так что я решил таким образом:

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)