Конвертировать из CMYK в RGB

У меня проблемы с преобразованием одностраничного PDF (CMYK) в JPG (RGB). Когда я использую приведенный ниже код, цвета изображения jpg становятся яркими. Я пробовал читать документы Wand, но не нашел ничего, что могло бы просто воспроизвести исходное изображение. Сами официальные документы ImageMagick для меня все еще довольно непрозрачны. В моей ситуации это необходимо сделать в скрипте Python.

Ниже представлен соответствующий фрагмент кода.

with Image(filename = HOME + outFileName + ".pdf", resolution = 90) as original:
    original.format = "jpeg"
    original.crop(width=500, height=500, gravity="center")
    original.save(filename = HOME + outFileName + ".jpg")

Как я могу точно преобразовать из CMYK в RGB?

ОБНОВЛЕНИЕ: вот ссылки на образец pdf и его преобразованный результат.

Unit

with Image(filename = HOME + outFileName + ".pdf", resolution = 90) as original:
    original.format = "jpeg"
    original.crop(width=500, height=500, gravity="center")
    original.save(filename = HOME + outFileName + ".jpg")
Word_5.pdf?dl=0" rel="nofollow noreferrer">Исходный PDF

Unit

with Image(filename = HOME + outFileName + ".pdf", resolution = 90) as original:
    original.format = "jpeg"
    original.crop(width=500, height=500, gravity="center")
    original.save(filename = HOME + outFileName + ".jpg")
Word_5.jpg?dl=0" rel="nofollow noreferrer">преобразовано в JPG


person Christopher Perry    schedule 13.10.2015    source источник
comment
Извините, я не знаю Wand. И даже выполнение этого непосредственно в ImageMagick выглядит немного сложно, как показывает этот вопрос.   -  person PM 2Ring    schedule 13.10.2015
comment
У меня не так много PDF-файлов CMYK, которые можно было бы проверить, но можете ли вы попробовать следующее в командной строке, возможно, convert someCMYK.pdf a.jpg, а также convert someCMYK.pdf -colorspace sRGB b.jpg и также convert someCMYK.pdf -negate c.jpg и посмотреть, подходит ли вам какой-либо из [abc] .jpg?   -  person Mark Setchell    schedule 13.10.2015
comment
Можете ли вы опубликовать, что вы переживаете и чего ожидаете? Использование того же кода, что и тестовый PDF-файл из ocp.de, дает правильное преобразование CMYK в RGB. .   -  person emcconville    schedule 13.10.2015
comment
Я обновил сообщение, включив в него образцы. К сожалению, приведенный выше код не дал ничего, отличного от преобразования образца, кроме преобразования цветов.   -  person Christopher Perry    schedule 16.10.2015


Ответы (2)


Этот скрипт преобразует изображение в RGB и сохранит его на месте, если обнаружит, что изображение находится в режиме CMYK:

from PIL import Image
image = Image.open(path_to_image)
if image.mode == 'CMYK':
    image = image.convert('RGB')
person Temak    schedule 02.05.2016
comment
Думаю, должно быть image = image.convert('RGB') - person BachT; 26.06.2017
comment
Пришлось добавить image.save(path_to_image). Без него не сохранить на месте. - person Abdullah A Almsaeed; 16.03.2020

Наконец я решил эту проблему. Изображение JPG в режиме CMYK, содержащееся в PDF, должно быть инвертировано.

Но в PIL инверсия изображения в режиме CMYK не поддерживается. Чем я решаю это, используя numpy.

Полный источник находится по ссылке ниже. https://github.com/Gaia3D/pdfImageExtractor/blob/master/extrectImage.py

См. Строки 166 ~ 170.

imgData = np.frombuffer(img.tobytes(), dtype='B')
invData = np.full(imgData.shape, 255, dtype='B')
invData -= imgData
img = Image.frombytes(img.mode, img.size, invData.tobytes())
img.save(outFileName + ".jpg")
person BJ Jang    schedule 06.09.2017