Результат PHP imagick COMPOSITE_DSTIN имеет черный фон

Я пытаюсь установить текстовый градиент из этого решения здесь https://www.sitepoint.com/community/t/gd-text-gradient/82127/9

Но цвет фона окончательного изображения черный, я пробую $im->flattenImages и $img->setBackgroundColor, но это не работает.

$im = new Imagick();

        $draw = new ImagickDraw();
        $draw->setFontSize(90);
        $draw->setFillColor(new ImagickPixel("black"));
        $draw->setTextEncoding('UTF-8');
        $draw->setGravity(Imagick::GRAVITY_CENTER);

        $metric = $im->queryFontMetrics($draw, $text);

        $width = $metric['textWidth'];
        $height = $metric['textHeight'];

        /* Create and save the gradiant */
        $Imagick = new Imagick();
        $Imagick->newPseudoImage($height, $width, "gradient:#FB7F4C-#FF409C");
        /*** rotate the image ***/
        $Imagick->rotateImage(new ImagickPixel(), 270);
        $Imagick->setImageFormat('png');
        $Imagick->writeImage("gradiant.png");

        /* Create and save the canvas */
        $im->newPseudoImage($width, $height, "null:");
        $im->setImageFormat('png');
        $im->writeImage("canvas.png");

        /* Add the text to the canvas ( Make the mask )*/
        $im = new Imagick("canvas.png");

// Write the text on the image
        $im->annotateImage($draw, 0, 0, 0, $text);
        $im->setImageBackgroundColor("transparent"); // <= Here
        /* Final image */
        $canvas = new Imagick("gradiant.png");
        $canvas->compositeImage($im, imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);

        $canvas->setImageFormat('png');
        $canvas->writeImage(__DIR__ . "/../../final.png");

        header('Content-Type: image/' . $im->getImageFormat());
        echo $canvas;

        unlink("canvas.png");
        unlink("gradiant.png");

Я обнаружил, что после COMPOSITE_DSTIN цвет фона становится черным, я пробовал много способов, но это не работает

Как убрать черный фон?

Какая версия библиотеки PHP и Imagick?

bishop 23.06.2019 01:19

@bishop PHP версии 7.1.26, модуль imagick версии 3.4.3, ImageMagick 6.7.2-7 2016-06-16, также невозможно изменить эту версию, потому что я использую общий хост

Ali Akbar Azizi 23.06.2019 02:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
747
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил это, добавив альфа-канал

Я стараюсь $canvas->setImageAlphaChannel(Imagick::ALPHACHANNEL_RESET); и после этого фон остается прозрачным

ОБНОВИТЬ

После того, как я обновил свою библиотеку imagick, она перестала работать и искать аналогичную проблему и нашел этот Imagemagick создает перевернутое изображение

И вот код, который хорошо работает

$canvas->transformImageColorspace(Imagick::COLORSPACE_SRGB);

Другие вопросы по теме