加载中……加载中……
奇遇——心情随笔 » 学习笔记 » PHP处理GIF动画之编码

PHP处理GIF动画之编码

上次弄最少步的线上统计,在魔方吧前面里挂了个链接,后来发现签名有限制,想要弄太多内容上去几乎不可能,于是就想到了利用图片。用PHP来生成图片,将最少步的结果写进图片中,这样就可以展示很多内容,而且还可以实时更新了,于是就简单弄了个。但是逐渐发现,只有一张静态图片,展示的内容还是不足,毕竟每期最少步,都有许多人参与,于是就想,如果能弄个GIF动画滚动结果,那么就很清晰而且能够想展示什么就展示什么了,于是最终结果如下图:

魔方吧最少步线上赛统计

这只是简单的滚动文字,实现起来无非就是很多帧的图片合成的动画,不过寻找用PHP合成动画这一解决方案,却花了很长时间,才在PHP Classes上找到一个类:GIF Encoder,即GIF images into animated GIF with native PHP class(用PHP类将GIF图像合成GIF动画)。

刚下载来的源文件还有些许错误,调整之后,就得到一个可以生成GIF动画的强大的PHP类了,下面以它给出的example简单的说说使用方法:

首先,创建要合成动画的图像资源,可以是已存在的图像,也可以是PHP生成的二进制图像数据,顺便设置好每帧之间的延时

点击查看原图

接着调用GIF解码类,前两个参数即上面的图像资源和每帧延时,第三个参数为0时动画循环,为1时不循环,第四个参数我至今没明白是做啥的,不过用默认的2就可以了,可选范围是0,1,2,3,第五、六、七个参数分别是R、G、B颜色值,最后一个参数则是资源类型,也就是前面提到的,可以是已经存在的图像(url),也可以是PHP生成的二进制数据(bin)。

点击查看原图

最后,输出生成的动画即可,当然,你也可以储存到文件里

点击查看原图

最后附上源代码

附件下载
gifencoder.rar 34.87KB
标签:

相关日志:

奇遇关注着:more »

评论:

  • 小子
    小子 2011-04-21 09:50
    被优化过的GIF,解码之后就拼不成原来的样子了,因为每帧的大小不一样...为此研究过GIF的内部数据结构,发现有POSITION这个选项,但是文中的GIFENCODER没有使用到这个参数...奇遇大大,求解!
    • 奇遇
      奇遇 2011-04-21 11:43
      你给发我一个优化过的GIF我来试试。。
  • 毕加波
    毕加波 2011-03-15 21:38
    ╮(╯﹏╰)╭....对我来说难了,呵呵

    绿色字体看不清楚哇,希望弄个颜色深一点的....滚动速度也慢一点点,估计效果会更好,嘿嘿
    • 奇遇
      奇遇 2011-03-15 21:40
      看不清楚?不会吧?你点击大图看看。。签名图很清晰的
    • 奇遇
      奇遇 2011-03-15 21:41
      对了,滚动速度弄快是因为如果慢慢滚的话会太多帧导致生成速度太慢了。。
      • 毕加波
        毕加波 2011-03-15 21:41
        可以滚动停止的时候显示时间长一点嘛

        大图还是很清楚的,呵呵
        • 奇遇
          奇遇 2011-03-15 22:01
          这个倒是可以,不过无所啦~我觉得这个速度还行了,如果停的时间再长点,生成的图片将会很大了
          • 毕加波
            毕加波 2011-03-15 22:10
            这个...我记得做GIF动画的时候是可以单独控制某一帧的显示时间的,这个php能做到吧?
          • 奇遇
            奇遇 2011-03-15 22:38
            当然可以。。但是确实会影响速度。。我测试过了。。现在这样的速度正合适
          • 毕加波
            毕加波 2011-03-16 13:05
            soga。文件删除了?呵呵
          • 奇遇
            奇遇 2011-03-16 13:07
            没删除。。只是今天又是新的一期了,没人发解法,图像就不显示了~
  • sprityaoyao
    sprityaoyao 2011-03-15 19:44
    那就板凳吧,下次发文之前通知我一身
    • 奇遇
      奇遇 2011-03-15 21:39
      呵呵,好呀~
      • sprityaoyao
        sprityaoyao 2011-03-16 11:34
        要是图片中能显示链接就好了……
        • 奇遇
          奇遇 2011-03-16 12:33
          图片可以显示链接,不可惜点不了呵呵~
  • 小歪
    小歪 2011-03-15 19:12
    占个沙发发

发表评论:

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18 阿狸19 阿狸20

引用地址:http://blog.qiyuuu.com/tb.php?sc=bce3b2&id=247