我正在使用此代码对图像进行水印,然后将其标记为水。当我尝试为gif图像添加水印时,我只得到那个gif的第一帧。
imagecopy(
// source
$main_image,
// destination
$logoImage,
// destination x and y
$imageWidth-$logoWidth, $imageHeight-$logoHeight,
// source x and y
0, 0,
// width and height of the area of the source to copy
$logoWidth, $logoHeight);
if($type == "png"){imagepng($main_image, $new_path);}
if($type == "jpeg"){imagejpeg($main_image, $new_path);}
if($type == "gif"){imagegif($main_image, $new_path);}
如何解决此问题?
答案 0 :(得分:0)
PHP中的image*
函数使用GD库。虽然没有在PHP手册中说明,但GD库不支持GIF动画(但是,网站上的许多评论都提到它)。目前,GD Project's网站也无法进行额外确认。
或者,如果您有ImageMagick
可用,则可以使用exec()
调用convert
应用程序来呈现水印+动画服务器端(reference):< / p>
$animated_gif = "source.gif";
$gif_with_watermark = "destination.gif";
$watermark = "watermark.png";
$cmd = 'convert '
. escapeshellarg($animated_gif)
. ' -coalesce -gravity South -geometry +0+0 null: '
. escapeshellarg($watermark)
. ' -layers composite -layers optimize '
. escapeshellarg($gif_with_watermark);
exec($cmd);