PHP - Добавить прозрачный PNG в GIF динамически

Я пытаюсь сделать водяной знак с помощью кода php, и все, кажется, работает нормально, пока я не поместил прозрачный файл PNG в GIF. Вот что происходит:

Поэтому вместо прозрачного черного водяного знака я получаю полутвердую зеленую вещь сверху. Водяной знак

Я использую следующий код PHP:

    ...
    $image = imagecreatefromgif($filepath);;
    $watermark_image = imagecreatefrompng($wm_filepath);
    imagealphablending($watermark_image, false);
    imagesavealpha($watermark_image, true);
    imagegif($image, $filepath);
    imagedestroy($image);


    imagecopy($image, $watermark_image, $offset['x'], $offset['y'], 0, 0, imagesx($watermark_image), imagesy($watermark_image) );

PS Я должен отметить, что я пытался объединить различные настройки, используя

    imagealphablending()
    imagesavealpha() 

и не получил результата

UPD:

Теперь я сохраняю изображение в виде файла png. Я удалил эти две строки imagealphablending($watermark_image, false); imagesavealpha($watermark_image, true); и это сработало. Однако прозрачность PNG перекрывает GIF. imagealphablending($image, true); не помогло Что мне делать?

1 ответ

Файлы GIF ограничены 256 цветами и имеют один цвет, обозначенный как прозрачный. Таким образом, вы не можете иметь сглаженную прозрачность, и при этом вы не можете иметь много сглаживания любого рода.

Я предлагаю сохранить в формате PNG.

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