PHP - İki JPEG görüntüleri basit animasyonlu GIF oluşturma?

3 Cevap php

Herkes böylece daha sonra diğer x saniye boyunca tek bir görüntü gösterilirken, iki farklı JPEG dosyaları bir animasyonlu GIF oluşturmak mümkün olmadığını biliyor ve mu ..?

Herhangi bir tavsiye takdir.

Teşekkürler.

3 Cevap

Bu GD ile yapılamaz ama bunun için büyük bir kütüphane buldum. Gerçi biraz karmaşık olduğunu, bu nedenle burada php ile animasyonlu gif yapar kütüphanesine bir bağlantıdır. İyice nasıl kullanılacağını açıklar. http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html

2 resimleri seçmek ve genişlik ve yükseklik için hız 900 için 100 yazın. Bu bir animasyonlu gif slayt onları koyacağız.

İşte bu komut için kodu:

<?php
if(isset($_POST['speed']))
{
    header('Content-type: image/gif');
    if(isset($_POST['download'])){
    header('Content-Disposition: attachment; filename="animated.gif"');
    }
    include('GIFEncoder.class.php');
    function frame($image){
        ob_start();
        imagegif($image);
        global $frames, $framed;
        $frames[]=ob_get_contents();
        $framed[]=$_POST['speed'];
        ob_end_clean();
    }
    foreach ($_FILES["images"]["error"] as $key => $error)
    {
        if ($error == UPLOAD_ERR_OK)
        {
            $tmp_name = $_FILES["images"]["tmp_name"][$key];
            $im = imagecreatefromstring(file_get_contents($tmp_name));
            $resized = imagecreatetruecolor($_POST['width'],$_POST['height']);
            imagecopyresized($resized, $im, 0, 0, 0, 0, $_POST['width'], $_POST['height'], imagesx($im), imagesy($im));
            frame($resized);
        }
    }
    $gif = new GIFEncoder($frames,$framed,0,2,0,0,0,'bin');
    echo $gif->GetAnimation();
}
?>
<form action="" method="post" enctype="multipart/form-data">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="jquery.MultiFile.js"></script>
<script src="jquery.placeholder.js"></script>
<input type="file" name="images[]" class="multi" />
<script>
    $(function(){
        $('input[placeholder], textarea[placeholder]').placeholder();
   });
</script>
   <SCRIPT language=Javascript>
      <!--
      function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }
      //-->
   </SCRIPT>
<input name="speed" maxlength="10" type="text" placeholder="Speed of frames in ms" onkeypress="return isNumberKey(event)">
<input name="width" maxlength="4" type="text" placeholder="Width" onkeypress="return isNumberKey(event)">
<input name="height" maxlength="4" type="text" placeholder="Height" onkeypress="return isNumberKey(event)">
<input type="submit" name="download" value="Download!">
<input type="submit" name="preview" value="Preview!">
</form>

Gördüğünüz gibi ilk linke bulunan GIFEncoder sınıfı başvuruyor. Ayrıca bazı javascript doğrulama ve jQuery Multiupload kullanır.

Not: Bu soru zaten istendi.

Bir güzel, hızlı ve daha yeni bir çözüm için, bkz: this SO answer.

Bir daha da yeni bir çözüm için, here is my fork o, küçük düzeltmeler ve bir dizi gelişmeler. Gerçek bir uygulamadan bunun bir örneği:

$anim = new GifCreator\AnimGif();

$gif = $anim->create($image_files);
//file_put_contents("test.gif", $gif);

header("Content-type: image/gif");
echo $gif;

(Requires PHP5.3 with GD2.)