Сначала я попробовал работать с «палочкой» и получил потрясающие результаты. красивый и маленький с точки зрения размера файла, но совершенно неправильный с точки зрения цветопередачи. Теперь я нашел решение с PIL (Pillow), которое должно обеспечить настоящую передачу цвета с помощью ImageCms.
Результаты близки к тем, что я получаю с Photoshop, но цвета немного отличаются. Файлы также намного больше, чем продукты из Photoshop.
Кто-нибудь знает решение? Я не привязан к решению на Python, но предпочел бы его.
Код: Выделить всё
from PIL import Image, ImageCms
import io
import os
icc_path = r'C:\Windows\System32\spool\drivers\color'
input_image_path = 'C:\\tmp\\input.jpg'
output_image_path = 'C:\\tmp\\output.jpg'
srgb_profile_path = os.path.join(icc_path, "sRGB Color Space Profile.icm")
cmyk_profile_path = os.path.join(icc_path, "CoatedFOGRA39.icc")
with Image.open(input_image_path) as img:
input_profile = ImageCms.ImageCmsProfile(srgb_profile_path)
output_profile = ImageCms.ImageCmsProfile(cmyk_profile_path)
converted_image = ImageCms.profileToProfile(
img,
inputProfile=input_profile,
outputProfile=output_profile,
renderingIntent=0,
outputMode='CMYK'
)
converted_image.save(output_image_path, quality=95, optimize=True)
Я благодарен за любую помощь.
Оригинальное (sRGB) изображение из op23 на Pexels: https://www.pexels.com/de-de/foto/trond ... -12166197/

Результат Photoshop

Результат PIL

Сравнение результатов CMYK — это лишь небольшая разница, наиболее заметная в немного более темном небесно-голубом цвете.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python