首页 » Web技术 » PHP » 正文

php合成或者创建gif动画

1.首先需要确认GD库是否正常。

2.如果是合成图片,请确保把分解的图片放在frames的文件夹里面。

3.需要 GIFEncoder.class.php 类

这是一个简单的效果图:

demo_merge

文件下载

主要代码如下:

<?php
include "GIFEncoder.class.php";

ob_start();
$board_width = 60;
$board_height = 60;
$pad_width = 5;
$pad_height = 15;
$ball_size = 5;
$game_width = $board_width - $pad_width*2 - $ball_size;
$game_height = $board_height-$ball_size;

$x = 0;
$y = rand(0,$game_height);
$xv = rand(1,10);
$yv = rand(1,10);
$pt[] = array($x,$y);
do{
        $x += $xv;
        $y += $yv;
        if($x > $game_width){
                $xv = -1*$xv;
                $x = $game_width - ($x-$game_width);
        }elseif($x < 0){
                $xv = -1*$xv;
                $x = abs($x);
        }
        if($y>$game_height){
                $yv = -1*$yv;
                $y = $game_height - ($y - $game_height);
        }elseif($y<0){
                $yv = -1*$yv;
                $y = abs($y);
        }
        $pt[] = array($x,$y);
}while($x!=$pt[0][0]||$y!=$pt[0][1]);

$i = 0;
while(isset($pt[$i])){
        $image = imagecreate($board_width,$board_height);
        imagecolorallocate($image, 0,0,0);
        $color = imagecolorallocate($image, 255,255,255);
        $color2 = imagecolorallocate($image, 255,0,0);

        if($pt[$i][1] + $pad_height < $board_width){
                imagefilledrectangle($image,0,$pt[$i][1],$pad_width, $pt[$i][1]+$pad_height,$color);
        }else{
                imagefilledrectangle($image,0,$board_width-$pad_height,$pad_width, $board_width,$color);
        }
        imagefilledrectangle($image,$board_width-$pad_width,0,$board_width, $board_height,$color2);
        imagefilledrectangle($image,$pad_width+$pt[$i][0], $ball_size+$pt[$i][1]-$ball_size, $pad_width+$pt[$i][0]+$ball_size, $ball_size+$pt[$i][1],$color);
        //imagesetpixel($image,$pt[$i][0],$pt[$i][1],$color);
        imagegif($image);
        imagedestroy($image);
        $imagedata[] = ob_get_contents();
        ob_clean();
        ++$i;
}

$gif = new GIFEncoder(
                            $imagedata,
                            100,
                            0,
                            2,
                            0, 0, 1,
                            "bin"
        );

Header ('Content-type:image/gif');
echo $gif->GetAnimation();
?>

 

发表评论