AnimGif用透明背景创建Gif

时间:2019-05-06 15:52:03

标签: php php-gd

我使用https://github.com/lunakid/AnimGif类。它使我动画了4创建的png图像到gif。如果没有imagetruecolortopalette,图片质量会很差(像素化)。使用imagetruecolortopalette时,它将失去透明背景。

《守则》赋予了使用模版切割的图像,并覆盖了也使用模版切割的其他图像。

Example stencil

代码如下:

$im = imagecreatetruecolor(64, 110);

$farbe_body = imagecolorallocate( $im, 255, 0, 255);
imagefill ( $im, 0, 0, $farbe_body );

imagecolortransparent($im, $farbe_body);

$userimage = imagecreatefromstring("$userimage");
imagecopy($im, $userimage, 0, 0, 0, 0, 64, 80);

$cut = imagecreatefromgif("cut_image.gif");
imagecopy($im_1, $cut, 0, 0, 0, 0, 64, 110);



$im_1 = imagecreatetruecolor(110, 110);

$farbe_body_1 = imagecolorallocate ( $im_1, 255, 0, 255 );

imagefill ( $im_1, 0, 0, $farbe_body_1 );
imagecolortransparent($im_1, $farbe_body_1);

$userimage_2 = imagecreatefromstring("$userimage");
imagecopy($im_1, $userimage_2, -3, 0, 0, 0, 64, 90);

$farbe_body_2 = imagecolorallocate ( $im_1, 255, 0, 255 );
imagefill ( $im_3, 0, 0, $farbe_body_2 );
imagecolortransparent($im_1, $farbe_body_2);

$farbe_body_3 = imagecolorallocate($im_1, 255, 0, 255);
$cut_2 = imagecreatefromgif("cut_image_2.gif");

imagecopy($im_1, $cut_2, 0, -1, 0, 0, 64, 110);
imagecolortransparent($im_1, $farbe_body_3);

imagecopymerge($im, $im_1, 3, 0, 0, 0, 64, 110, 100);


$frames = array($im);

$durations = array(20, 20, 20, 20);

$gc = new GifCreator\GifCreator();
$gc->create($frames, $durations, 5);

$gifBinary = $gc->getGif();

header('Content-type: image/gif');
header('Content-Disposition: filename="butterfly.gif"');
echo $gifBinary;
exit;

0 个答案:

没有答案