[PHP] ImageMagick

raven

Well-known member
20 April 2006
5.038
540
Hoi ;)

Ich erstelle zur Zeit mit ImageMagick aus verschiedenen GD-Einzelbildern eine GIF-Animation, jedoch läuft die Animation nur einmal durch und bleibt danach stehen. Wie bekomme ich eine Endlosanimation hin? :)

PHP:
$animated = imagick_newimagelist();

for($i=0;$i<10;$i++){
    $im = @imagecreatefromgif("signature.gif") or die("Cannot initialize new GD image stream");
    imagecolortransparent($im, imagecolorclosest($im, 255, 0, 255));
    $text_color = imagecolorallocate($im, floor(247 / 9 * $i), floor(251 / 9 * $i), floor(251 / 9 * $i));
    if($config_vars['loseactive'] < 1 || $config_vars['siteactive'] < 1)
        imagettftext($im, 10, 0, 18, 32, $text_color, "../fonts/Verdana.ttf", "temp. deaktiviert");
    else
        imagettftext($im, 10, 0, 18, 32, $text_color, "../fonts/Verdana.ttf", $sum . " Lose");
    imagegif($im, "sigimagelist/sig".$i.".gif");
    imagedestroy($im);

    $handle = imagick_readimage("sigimagelist/sig".$i.".gif");
    imagick_pushlist($animated, $handle);
}

imagick_convert($animated, 'GIF');
imagick_writeimage($animated, "sigimagelist/sig.gif");
ist evtl. noch nen bissl ungeordnet, aber erstmal auch nur ein Test ;)

Würde mich freuen, wenn mir jemand helfen könnte ... ich verwende die PECL-Extension imagick, also Standard ;) Leider findet man kaum brauchbare Dokumentation dafür.

Danke,
raven
 
Zuletzt bearbeitet:
ich weiß nicht wie man es über diese php-erweiterung dem image-magic sagt, aber normalerweise gibt es für eine endlosanimation in imgaemagic den befehl "loop 0" ;)
 
Danke, funktioniert per Konsolenbefehl (convert sig.gif -loop 0 sig.gif) soweit ganz gut :)

Jetzt eine andere Frage: Ich möchte die GIF-Animation in zwei Ebenen haben: Ein Hintergrund, der immer angezeigt wird, und 10 Vordergrundbilder, auf denen ein Text angezeigt wird. Die Vordergrundbilder sind bis auf den Text transparent. Wie bekomme ich es nun hin, dass nur die Vordergrundbilder ablaufen, aber nicht der Hintergrund? ;)

Ist einfach wegen der Dateigröße das Problem, leider :(