IMagick RGB в CMYK испорченное преобразование

Я конвертирую изображения из RGB в CMYK с помощью IMagick в PHP.

Во время преобразования некоторые изображения получают черные сетки на них.

Код:

$IMagick = new IMagick();
$IMagick->clear();
$IMagick->readImage(SITE_ROOT . 'userfiles/image/products/' . $image);
$IMagick->negateImage(false, Imagick::CHANNEL_ALL);
$IMagick->setImageColorspace(13);
$icc_cmyk = file_get_contents(dirname(__FILE__).'/USWebCoatedSWOP.icc');
$IMagick->profileImage('icc', $icc_cmyk);
unset($icc_cmyk);
$IMagick->setImageColorspace(12);
$IMagick->writeImage (SITE_ROOT . 'userfiles/image/products/cmyk/' . $image);

Изображений:

оригинал

переоборудованный

Я конвертирую около 80 изображений в цикле, и большинство из них в порядке.
Есть идеи, почему это происходит?

РЕДАКТИРОВАТЬ:
Рабочий код:

$IMagick = new IMagick();
$IMagick->clear();
$IMagick->readImage(SITE_ROOT . 'userfiles/image/products/' . $image);
$icc_cmyk = file_get_contents(dirname(__FILE__).'/USWebCoatedSWOP.icc');
$IMagick->profileImage('icc', $icc_cmyk);
unset($icc_cmyk);
$IMagick->transformImageColorspace(12);
$IMagick->writeImage (SITE_ROOT . 'userfiles/image/products/cmyk/' . $image);

2

Решение

setImageColorspace следует использовать только при создании новых изображений, либо с помощью Imagick :: newPseudoImage, либо путем рендеринга экземпляра ImagickDraw в изображение.

Для существующих изображений правильным методом изменения цветового пространства изображения является Imagick :: transformImageColorspace.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector