У меня есть файл 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);
Любые мысли по этому поводу будут высоко оценены!
Спасибо!
Задача ещё не решена.
Других решений пока нет …