@ZelenovM

Как добавить один png в другой без потери цвета методом compositeImage в imagegick?

$fullHeight = 17100;
        $fullWidth = 27000;
        $imagick = new Imagick();
        $imagick->newImage($fullWidth+300,  $fullHeight+299, new \ImagickPixel('transparent'));

        $image = 'png test';
        $imgPart = new Imagick($image);
        $imagick->compositeImage($imgPart, Imagick::COMPOSITE_ATOP,1000,1000);
        $imgPart->clear();

        $imagick->setImageFormat('png');
        $imagick->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);
        $imagick->setImageCompressionQuality(0);
        $fileName = 'test.png';
        $imagick->writeImage($fileName);
        $imagick->clear();


После выполнения кода, наложенное изображение становится чёрно-белым и сильно теряет в качестве. Если использовать тот же код, но указать формат jpg, то цвета и качество сохраняются. Варианты решения?
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
Real_Fermer
@Real_Fermer
Программист PHP
Попробуйте добавить перед compositeImage() следующую строку:
$imgPart->setImageAlphaChannel(\Imagick::ALPHACHANNEL_OPAQUE);

Это поможет сохранить прозрачность и цвета изображения, которое вы наслаиваете на другое изображение
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы