Imagick конвертировать CMYK JPG в PNG и прозрачность

У меня есть файл CMYK JPG, из которого мне нужно вырезать некоторые части, а затем сохранить их в файл CMYK PNG. Проблема в том, что даже я просто открываю файл JPG и сохраняю его в файл PNG, цвета сильно меняются. Я пытался исправить это в течение дня и исчерпал все доступные ресурсы на SO и Google.

Вот мой код:

$imageStick = new Imagick("original.jpg"); // CMYK JPG

$largeStick = new Imagick(); // create a bigger PNG file with transparent background
$largeStick->newImage($smallStick->getimagewidth(), $smallStick->getimageheight() * 3, new ImagickPixel('transparent'), 'png');

$largeStick->compositeimage($smallStick, Imagick::COMPOSITE_DEFAULT, 0, 0);

$largeStick->writeimage("resampled.png");

А вот и картинки:

оригинал — Оригинал — Скачать файл

передискретизируется — передискретизируется

Есть идеи, почему это происходит?

Я попытался скопировать все возможные профили и свойства изображения из исходного файла JPG:

foreach ($smallStick->getimageprofiles() as $name => $profile)
!empty($profile) && $largeStick->setimageprofile($name, $profile);

foreach ($smallStick->getimageproperties() as $name => $property)
!empty($profile) && $largeStick->setimageproperty($name, $property);

$largeStick->setcolorspace($smallStick->getcolorspace());

вручную настроить профиль ICC, но не повезло:

$icc_cmyk = file_get_contents('USWebUncoated.icc');
$largeStick->profileImage('icc', $icc_cmyk);

Любые мысли по этому поводу будут высоко оценены!

Спасибо!

1

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]