使用Gifencoderclass.php动画gif,源不是GIF

时间:2016-04-28 17:16:58

标签: php animated-gif

我刚刚找到了用于制作动画gif的php库 我想我已经编辑了示例代码,但我得到了错误GIFEncoder V2.05: 0 Source is not a GIF image!

任何使用过这个php课程的人都可以帮助我吗? 下面是我使用的代码,我已经注释了"示例"代码。

<?php

include "GIFEncoder.class.php";
/*
Build a frames array from sources...

if ( $dh = opendir ( "frames/" ) ) {
while ( false !== ( $dat = readdir ( $dh ) ) ) {
    if ( $dat != "." && $dat != ".." ) {
        $frames [ ] = "frames/$dat";
        $framed [ ] = 5;
    }
}
closedir ( $dh );
} 
*/
$frames = array("http://www.hoppvader.nu/weatherpics/Windsock1/windsock-10.gif","http://www.hoppvader.nu/weatherpics/Windsock1/windsock-20.gif","http://www.hoppvader.nu/weatherpics/Windsock1/windsock-30.gif");
$framed = array(40, 80, 40);
/*
    GIFEncoder constructor:
    =======================

    image_stream = new GIFEncoder   (
                        URL or Binary data  'Sources'
                        int                 'Delay times'
                        int                 'Animation loops'
                        int                 'Disposal'
                        int                 'Transparent red, green, blue colors'
                        int                 'Source type'
                    );
*/
$gif = new GIFEncoder   (
                        $frames,
                        $framed,
                        0,
                        2,
                        0, 0, 0,
                        "url"
    );
/*
    Possibles outputs:
    ==================

    Output as GIF for browsers :
        - Header ( 'Content-type:image/gif' );
    Output as GIF for browsers with filename:
        - Header ( 'Content-disposition:Attachment;filename=myanimation.gif');
    Output as file to store into a specified file:
        - FWrite ( FOpen ( "myanimation.gif", "wb" ), $gif->GetAnimation ( ) );
*/
Header ( 'Content-type:image/gif' );
echo    $gif->GetAnimation ( );
?>

1 个答案:

答案 0 :(得分:0)

你应该使用Gifcreator:

https://github.com/Sybio/GifCreator

<?php
   include "GifCreator.php";

   // create an array with images
   $frames =  array(imagecreatefromjpeg("pic1.jpg"),
                    imagecreatefromjpeg("pic2.jpg"),
                    imagecreatefromjpeg("pic3.jpg"));

   // the time each image should be visible in ms
   $time = array(20,20,20); 

   // create the gif-image
   $gc = new \GifCreator\GifCreator();
   $gc->create($frames, $durations, 0);

   $gifBinary = $gc->getGif();

   header('Content-type: image/gif');
   header('Content-Disposition: filename="GIF-image"');

   //echo the GIF-image
   echo $gifBinary;

?>

我没有使用GIFencoder,但我使用过GIFcreator,这就是我建议的原因。