有谁知道是否可以从两个不同的 JPEG 文件生成动画 GIF,显示一个图像 x 秒,然后显示另一个,依此类推……?
任何建议表示赞赏。
谢谢。
原文由 Dan 发布,翻译遵循 CC BY-SA 4.0 许可协议
有谁知道是否可以从两个不同的 JPEG 文件生成动画 GIF,显示一个图像 x 秒,然后显示另一个,依此类推……?
任何建议表示赞赏。
谢谢。
原文由 Dan 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于一个不错的、快速的和更新的解决方案,请参阅 这个 SO answer 。
对于更新的解决方案, 这是我的分支,其中包含一些小的修复和改进。一个来自实际应用的例子:
$anim = new GifCreator\AnimGif();
$gif = $anim->create($image_files);
//file_put_contents("test.gif", $gif);
header("Content-type: image/gif");
echo $gif;
(需要带有 GD2 的 PHP5.3。)
适用于 PHP 5.6 和 GD 2.4.11 的示例:
require_once "AnimGif.php";
/*
* Create an array containing file paths, resource var (initialized with imagecreatefromXXX),
* image URLs or even binary code from image files.
* All sorted in order to appear.
*/
$image_files = array(
//imagecreatefrompng("/../images/pic1.png"), // Resource var
//"/../images/pic2.png", // Image file path
//file_get_contents("/../images/pic3.jpg"), // Binary source code
'https://yt3.ggpht.com/-KxeE9Hu93eE/AAAAAAAAAAI/AAAAAAAAAAA/D-DB1Umuimk/s100-c-k-no-mo-rj-c0xffffff/photo.jpg', // URL
'https://media.licdn.com/mpr/mpr/shrinknp_100_100/AAEAAQAAAAAAAAloAAAAJDRkZGY2MWZmLTM1NDYtNDBhOS04MjYwLWNkM2UzYjdiZGZmMA.png', // URL
'http://is5.mzstatic.com/image/thumb/Purple128/v4/e4/63/e7/e463e779-e6d0-0c3d-3ec1-97fdbaae230a/source/100x100bb.jpg' // URL
);
/*
* Create an array containing the duration (in millisecond) of each frame.
*/
$durations_millis = array(
1000,
2000,
3000
);
/*
* Fix durations.
*/
$durations = array();
for ($i = 0; $i < count($durations_millis); $i++) {
$durations[$i] = $durations_millis[$i] / 10;
}
/*
* Specify number of loops. (0 = infinite looping.)
*/
$num_loops = 0;
/*
* Create gif object.
*/
$anim_gif = new GifCreator\AnimGif();
$gif_object = $anim_gif->create($image_files, $durations, $num_loops);
/*
* Get the animated GIF binary.
*/
$gif_binary = $gif_object->get();
/*
* Set the file name of the saved/returned animated GIF.
*/
$file_name = "animated.gif";
/*
* Optionally, save animated GIF in a folder as a GIF:
*/
//file_put_contents($file_name, $gif_binary);
/*
* Optionally, return the animated GIF to client.
*/
header("Content-type: image/gif");
header('Content-Disposition: filename="' . $file_name . '"'); // Optional
echo $gif_binary;
/*
* All done.
*/
exit;
原文由 Sz. 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2.4k 阅读
2 回答1.2k 阅读
使用 PHP 预打包的标准 GD 函数是不可能的。
在 phpclasses.org 上有一个类。我自己从未使用过它,但它被许多其他软件包使用。
或者,如果您可以使用 MagickWand 库或命令行从 PHP 访问 ImageMagick ,请使用它。使用 ImageMagick,这不是问题。
ImageMagick v6 动画基础(来自IM手册)
创建动画 GIF 图像