tartan / php-gif
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-08 17:15:18 UTC
README
下面的GIF图像是一个示例图像,它可以包含实时数据。一个PHP脚本计算到新年的剩余时间并生成GIF图像。向客户发送含实时数据的电子邮件的理想解决方案。电子邮件客户端允许您通过URL加载图像,因此每次客户端重新打开电子邮件消息时,GIF都会用实时数据重新生成。
对于下面的图像,这不起作用,遗憾的是,因为GitHub一次下载图像并将其存储在本地。然而,大多数电子邮件客户端都直接从源加载图像。已成功测试Gmail和Outlook 2011(Mac OSX)。
重要提示:Windows版的Outlook 2007、2010和2013将只显示第一帧。提示:将第一帧保持通用,这样GIF图像是否动画无关紧要。
注意
我收到了一些关于Gmail的问题,所以让我们更详细地描述一下这个邮件客户端。此脚本在撰写本文时(2015-12-23)已成功测试。Gmail通过自己的代理加载图像,而不是直接从源加载。关于代理有不同的意见,但似乎Google的代理保护了您的私人数据,并且仅通知发件人电子邮件已被打开。有传言称Gmail缓存了图像,但仍尊重缓存头,因此您可以指示Gmail多长时间刷新一次数据。我个人在这方面没有遇到任何麻烦!我在Gmail中测试了多次倒计时图像,当然您也可以自己测试。为了确保安全,我在示例中添加了一些禁用缓存的头部。
Composer安装
- 获取Composer
- 使用以下命令安装php-gif:
php composer.phar require erikvdven/php-gif
- 将以下内容添加到您的应用程序主PHP文件中:
require 'vendor/autoload.php';
入门
创建一个PHP文件,并在文件的开始处添加以下头信息
// Caching disable headers header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // Output as a GIF image header ('Content-type:image/gif'); // Include the GIFGenerator class use ErikvdVen\Gif\GIFGenerator;
在下一行中,您可以创建一个GIF图像,首先初始化GIFGenerator对象,并创建一个包含所有图像帧的数组
// Initialize a new GIFGenerator object $gif = new GIFGenerator(); // Create a multidimensional array with all the image frames $imageFrames = array( 'repeat' => false, 'frames' => array( array( 'image' => './images/newyear.jpg', 'text' => array( array( 'text' => 'Hello GIF frame 1', 'fonts-color' => '#000', 'x-position' => 140, 'y-position' => 138 ) ), 'delay' => 100 ), ) );
最后,生成图像并在屏幕上echo
结果
echo $gif->generate($imageFrames);
示例
一个更完整的示例。您可以将以下代码复制粘贴到文件中,并在浏览器中执行以查看更完整的结果。如您所见,在GIF图像中不需要使用文本,您可以根据需要添加每帧的文本,以及GIF图像中每帧的数量。
<?php // Caching disable headers header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // Output as a GIF image header ('Content-type:image/gif'); // Include the GIFGenerator class use ErikvdVen\Gif\GIFGenerator; // Initialize a new GIFGenerator object $gif = new GIFGenerator(); // Create a multidimensional array with all the image frames $imageFrames = array( 'repeat' => 5, 'frames' => array( array( 'image' => './images/newyear.jpg', 'text' => array( array( 'text' => 'Hello GIF frame 1', 'fonts' => './fonts/Lato-Light.ttf', 'fonts-size' => 30, 'angle' => 0, 'fonts-color' => '#000', 'x-position' => 140, 'y-position' => 138 ) ), 'delay' => 100 ), array( 'image' => './images/newyear.jpg', 'text' => array( array( 'text' => 'Hello GIF frame 2', 'fonts' => './fonts/Lato-Light.ttf', 'fonts-size' => 15, 'angle' => 0, 'fonts-color' => '#000', 'x-position' => 140, 'y-position' => 138 ), array( 'text' => 'Hello GIF frame 2', 'fonts' => './fonts/Lato-Light.ttf', 'fonts-size' => 15, 'angle' => 0, 'fonts-color' => '#000', 'x-position' => 140, 'y-position' => 108 ) ), 'delay' => 100 ), array( 'image' => './images/newyear.jpg', 'delay' => 50 ) ) ); echo $gif->generate($imageFrames); ?>
许可 & 致谢
本软件根据MIT许可发布。
GIFEncoder
GIFEncoder.class.php包含来自László Zsidi的GIFEncoder PHP类的少量修改。