Создайте анимированный GIF с API-интерфейсом ImageMagick от PHP

Я могу сделать это легко в моей ОС

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.

Надеюсь, это несколько соответствует тому, что вы были после.