首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP制作GIF动画

用PHP制作GIF动画
EN

Stack Overflow用户
提问于 2012-08-28 21:53:29
回答 2查看 2K关注 0票数 2

我想创建一个GIF图像的动画像素与透明的背景,这是从Javascript的颜色。我试着使用这个:http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html和这个:http://www.jeroenvanwissen.nl/weblog/php/howto-generate-animated-gif-with-php,但是我遇到了一个问题。我创建了以下代码:

代码语言:javascript
复制
<?php
header ('Content-type:image/gif');
include('GIFEncoder.class.php');

// Open the first source image and add the text.
$image = imagecreatefrompng('None.png');
imagesavealpha($image, true);
$color = $_GET["sc"];
$r_bg = hexdec(substr($color,0,2));
$g_bg = hexdec(substr($color,2,2));
$b_bg = hexdec(substr($color,4,2));
$c1 = imagecolorallocate($image, $r_bg, $g_bg, $b_bg);
imagesetpixel($image,36,24,$c1);
imagesetpixel($image,36,25,$c1);
imagesetpixel($image,36,26,$c1);
imagesetpixel($image,37,26,$c1);
imagesetpixel($image,38,26,$c1);
imagesetpixel($image,38,25,$c1);
imagesetpixel($image,38,24,$c1);
imagesetpixel($image,37,24,$c1);

// Generate GIF from the $image
// We want to put the binary GIF data into an array to be used later,
//  so we use the output buffer.
ob_start();
imagegif($image);
$frames[]=ob_get_contents();
$framed[]=40;

// Delay in the animation.
ob_end_clean();

// And again..
// Open the first source image and add the text.
$image = imagecreatefrompng('None.png');
imagesavealpha($image, true);
$color = $_GET["sc"];
$r_bg = hexdec(substr($color,0,2));
$g_bg = hexdec(substr($color,2,2));
$b_bg = hexdec(substr($color,4,2));
$c1 = imagecolorallocate($image, $r_bg, $g_bg, $b_bg);
imagesetpixel($image,34,23,$c1);
imagesetpixel($image,34,24,$c1);
imagesetpixel($image,34,25,$c1);
imagesetpixel($image,34,26,$c1);
imagesetpixel($image,34,27,$c1);
imagesetpixel($image,35,28,$c1);
imagesetpixel($image,36,28,$c1);
imagesetpixel($image,37,28,$c1);
imagesetpixel($image,38,28,$c1);
imagesetpixel($image,39,28,$c1);
imagesetpixel($image,40,27,$c1);
imagesetpixel($image,40,26,$c1);
imagesetpixel($image,40,25,$c1);
imagesetpixel($image,40,24,$c1);
imagesetpixel($image,40,23,$c1);
imagesetpixel($image,39,22,$c1);
imagesetpixel($image,38,22,$c1);
imagesetpixel($image,37,22,$c1);
imagesetpixel($image,36,22,$c1);
imagesetpixel($image,35,22,$c1);

// Generate GIF from the $image
// We want to put the binary GIF data into an array to be used later,
//  so we use the output buffer.
ob_start();
imagegif($image);
$frames[]=ob_get_contents();
$framed[]=40;

// Delay in the animation.
ob_end_clean();

// Generate the animated gif and output to screen.
$gif = new GIFEncoder($frames,$framed,0,2,0,0,0,'bin');
echo $gif->GetAnimation();
?>

我得到一个十六进制的颜色代码,然后将其更改为RGB。但是,我得到了以下错误:

代码语言:javascript
复制
<br />
<b>Notice</b>:  Use of undefined constant ERR00 - assumed 'ERR00' in <b>D:\Testing\xampp\htdocs\Test\Test.php</</b> on line <b>75</b><br />
<br />
<b>Notice</b>:  Use of undefined constant ERR01 - assumed 'ERR01' in <b>D:\Testing\xampp\htdocs\Test\Test.php</</b> on line <b>75</b><br />
<br />
<b>Notice</b>:  Use of undefined constant ERR02 - assumed 'ERR02' in <b>D:\Testing\xampp\htdocs\Test\Test.php</b> on line <b>75</b><br />
<br />
<b>Notice</b>:  Use of undefined constant ERR03 - assumed 'ERR03' in <b>D:\Testing\xampp\htdocs\Test\Test.php</b> on line <b>75</b><br />
GIF89a2

我不知道这就是问题所在。:/

EN

回答 2

Stack Overflow用户

发布于 2012-08-28 22:08:42

检查您的GIFEncoder类。有一些变量是未定义的。尝试检查empty($for_all_vars);

或者查看this

票数 0
EN

Stack Overflow用户

发布于 2017-05-11 04:35:04

供将来参考:我今天遇到了这个错误。发生这种情况是因为在使用了10+多年的GIFEncoder库中存在错误的语法。在定义$ERR数组的地方,缺少数组键两边的引号。

正确的代码片段必须是:

代码语言:javascript
复制
var $ERR = Array (
    'ERR00'=>"Does not supported function for only one image!",
    'ERR01'=>"Source is not a GIF image!",
    'ERR02'=>"Unintelligible flag ",
    'ERR03'=>"Does not make animation from animated GIF source",
);

(请注意ERR00 to ERR03周围的引号,这些引号在网络上流传的原始文件中丢失了。)

希望这对某些人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12160791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档