Главная Новости

Как изменить размер анимации GIF средствами PHP и IMAGICK?


Опубликовано: 05.09.2018

Как изменить размер анимации GIF средствами PHP и IMAGICK? На многих форумах Рунета задают подобные вопросы. Но ответа на них нет почти нигде. Много предложений, поступает от более продвинутых в PHP пользователей, как можно изменить размер анимации GIF. Но в основном - это не уверенные советы "наверно так...", "может так? ..." и тому подобные. Еще предлагаются найденные в сети длинные php-коды, с кучей лишних функций и примочек, которые работают не корректно или не работают вовсе.


Уменьшение изображений с помощью PHP

На самом деле все гораздо проще!

Итак, приступим непосредственно к ответу на вопрос: "как изменить размер анимации GIF средствами PHP и IMAGICK?". Объект IMAGICK, содержащий анимацию, представляет собой массив, значения которого содержат по одному кадру. Для того чтобы изменить анимированный GIF средствами PHP и IMAGICK, нужно просто перебрать в цикле объект IMAGICK, и изменить размер каждого кадра. Удобнее всего это делать в цикле "foreach".

Вот простой пример скрипта, который создает превьюшку (с кадрированием лишних краев) и выводит ее в браузер:

// максимальная ширина кадра $max_animation_width = 128; // максимальная высота кадра $max_animation_height = 128; // создаем объект из существующей анимации GIF $animation_source = new Imagick('animation.gif'); // узнаем формат анимации $animation_format = $animation_source->getImageFormat(); // в цикле перебираем объект по кадрам foreach($animation_source as $imagick_frame) { // меняем размер текущего кадра с обрезанием краев $imagick_frame->cropThumbnailImage($max_animation_width, $max_animation_height); } //end foreach($animation_source as $imagick_frame) // отправляем заголовок header('Content-Type: image/'.$animation_format); // выводим измененную анимацию echo $animation_source->getImagesBlob(); // удаляем объект, чтобы не засорять буфер $animation_source->destroy();

Вот такой маленький php-скрипт легко меняет размер анимации GIF.

Конечно, IMAGICK располагает огромным количеством разных функций и фильтров, с помощью, которых можно сделать с анимацией практически все, что душе угодно, но это уже "другая история".

rss