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.