Я следую примеру из документации PHP «Добавление водяных знаков к изображениям с использованием альфа-каналов», за исключением того, что мое конечное изображение — это прозрачный файл PNG, а мое изображение штампа — изображение GIF. Проблема, с которой я столкнулся, заключается в том, что мое изображение в формате GIF теряет цвет фона, черный и становится прозрачным в моем конечном изображении. Мое окончательное расширение изображения должно быть таким же, как исходный файл, GIF.
<?php
$source = 'path_to_file/source.gif';//190x34 size image with black background
$trans_img_dir = 'path_to_file/blank.png';
$final_image = 'path_to_file/final.gif';
$BLANK_IMG = 200;
//create transparent image
$imcreate = imagecreatetruecolor($BLANK_IMG, $BLANK_IMG);
imagecolortransparent($imcreate, imagecolorallocatealpha($imcreate, 0, 0, 0, 127));
//imagealphablending($imcreate, false);
//imagesavealpha($imcreate, true);
imagepng($imcreate, $trans_img_dir);
imagedestroy($imcreate);
$blank_mark = imagecreatefrompng($trans_img_dir);
$im = imagecreatefromgif($source);
$sx = imagesx($im);
$sy = imagesy($im);
imagecopy(
$blank_mark,
$im,
$BLANK_IMG/2 - $sx/2,
$BLANK_IMG/2 - $sy/2,
0,
0,
$sx,
$sy
);
imagegif($blank_mark, $final_image);
imagedestroy($blank_mark);
imagedestroy($im);
?>
Задача ещё не решена.
Других решений пока нет …