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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽