Насколько мне известно, функции библиотеки PHP GD не способны генерировать анимированные GIF-файлы.
Вам придется полагаться на другие инструменты, такие как функция convert
ImageMagik (вы можете вызвать ее через exec
).
РЕДАКТИРОВАТЬ после комментария:
Если вы просто хотите создать не анимированный GIF-файл, этот процесс легко выполнить с помощью библиотек GD.
Скажем, у вас есть текст в переменной $txt
и два изображения image1.jpg
и image2.gif
, которые вы хотите поместить в стек.
Конечный результат будет выглядеть как
TEXT
-------------
| |
| IMAGE 1 |
| |
-----------
-------------
| |
| IMAGE 2 |
| |
-----------
Сначала откройте два изображения:
$i1 = imagecreatefromjpeg("image1.jpg");
$i2 = imagecreatefromgif("image2.gif");
Теперь найдите размер двух изображений.
$i1_w = imagesx($i1);
$i1_h = imagesy($i1);
$i2_w = imagesx($i2);
$i2_h = imagesy($i2);
Ваше окончательное изображение будет иметь
// Add 30px for the text, you can calculate this precisely
// using imagettfbbox but be sure to use imagettftext
// instead of imagestring later
$height = $i1_h + $i2_h + 30;
$width = max($i1_w, $i2_w);
Теперь вы создаете ваше выходное изображение
$img = imagecreatetruecolor($width, $height);
Поместить текст поверх
$black = imagecolorallocate($img, 0, 0, 0);
// Instead of using 1 as 2nd parameter you can use a font created
// with imageloadfont. Also, you may want to calculate text coordinates
// so that it is centered etc.
imagestring($img, 1, 10, 10, $txt, $black);
Теперь добавьте изображения
imagecopy($img, $img1, ($width-$img1_w)/2, 30, 0, 0, $img1_w, $img1_h);
imagecopy($img, $img2, ($width-$img2_w)/2, 35+$img1_h, 0, 0, $img2_w, $img2_h);
Наконец, выведите gif
header('Content-Type: image/gif');
imagegif($img); // Or imagejpeg, imagepng etc.
Если вы просто хотите сохранить изображение, не показывая его, просто сделайте:
imagegif($img, "output.gif");