Я могу сделать это легко в моей ОС
convert -delay 1/1 -loop 0 *.gif animated.gif
Но я не могу найти, как это сделать в PHP API. Без изменения размера или чего-либо еще, у меня есть набор кадров, которые нужно оживить.
Хотя я не эксперт по PHP, я знаю, что этот вопрос не слишком сложный. Вы хотите создать объект Imagick, к которому вы можете добавить свои фреймы. С каждым фреймом вы можете изменять параметры, такие как синхронизация и т. Д.
Предполагая, что вы работаете с изображениями, которые загружаются из базовой веб-формы, я написал базовый пример, который прорисовывает изображения, которые были загружены с именем «image0», где «0» увеличивается, однако многие файлы включены , Естественно, вы можете просто добавлять изображения, используя те же методы в именах фиксированных файлов или что угодно.
$GIF = new Imagick(); $GIF->setFormat("gif"); for ($i = 0; $i < sizeof($_FILES); ++$i) { $frame = new Imagick(); $frame->readImage($_FILES["image$i"]["tmp_name"]); $frame->setImageDelay(10); $GIF->addImage($frame); } header("Content-Type: image/gif"); echo $GIF->getImagesBlob();
-$GIF = new Imagick(); $GIF->setFormat("gif"); for ($i = 0; $i < sizeof($_FILES); ++$i) { $frame = new Imagick(); $frame->readImage($_FILES["image$i"]["tmp_name"]); $frame->setImageDelay(10); $GIF->addImage($frame); } header("Content-Type: image/gif"); echo $GIF->getImagesBlob();
-$GIF = new Imagick(); $GIF->setFormat("gif"); for ($i = 0; $i < sizeof($_FILES); ++$i) { $frame = new Imagick(); $frame->readImage($_FILES["image$i"]["tmp_name"]); $frame->setImageDelay(10); $GIF->addImage($frame); } header("Content-Type: image/gif"); echo $GIF->getImagesBlob();
В этом примере создается объект Imagick, который станет нашим GIF. Файлы, которые были загружены на сервер, затем зацикливаются, и каждый из них сначала считывается (помните, однако, что этот метод основан на том, что изображения названы так, как я описал выше), во-вторых, он получает значение задержки, и, в-третьих, он добавляется к будущий GIF. Это основная идея, и она создаст то, что вам нужно (надеюсь).
Но есть много, чтобы вмешаться, и ваша конфигурация может выглядеть по-другому. Я всегда нашел ссылку на API php.net Imagick API на вид сосать, но мне все же приятно иметь, и я время от времени пользуюсь им, чтобы ссылаться на вещи из стандартного ImageMagick.
Надеюсь, это несколько соответствует тому, что вы были после.