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

Комментарии

captcha
 20 апр. 2014 Ответить

If my problem was a Death Star, this article is a photon torpedo.


Что такое облачное хранилище и как им пользоваться? Что такое облачное хранилище и как им пользоваться?
Как выбрать пластины для теплообменника? Пластины для теплообменника
Изучение языка ECMAScript: основа современной веб-разработки История языка ECMAScript
Как добавить комментарий в HTML? HTML примеры
Apple позволит разработчикам распространять приложения напрямую с их сайтов Apple позволит разработчикам распространять приложения напрямую с их сайтов
jQuery 4.0 сокращает поддержку браузеров, удаляет API Новое в jQuery 4.0
Как продвинуть Telegram-канал: с нуля до результата Как продвинуть канал в Telegram с нуля?
Получить IT профессию с нуля: академия Eduson Получить IT профессию с нуля
Перспективы эволюции SEO: встречайте будущее продвижения в поисковых системах Будущее SEO-продвижения
Создание сайтов в Алматы: агентство site-promote.com Разработка сайта компании
Антипкин Михаил Сергеевич о метавселенной, открывающей безграничные возможности для инноваций и экспериментов Антипкин Михаил Сергеевич о метавселенной
Сёрфинг с браузером FraudFox: исчерпывающее руководство Сёрфинг с браузером FraudFox
Где найти лицензионные ключи активации к ПО? Где найти лицензионные ключи активации к ПО?
Курсы веб дизайна: обучение онлайн Курсы веб дизайна: обучение онлайн
Как продлить срок службы бытовой техники? Как продлить срок службы бытовой техники?
Основы VPS/VDS: что нужно знать перед арендой? Основы VPS/VDS: что нужно знать перед арендой?
Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров
Топ-10 игр для Android стоимостью менее $5 Топ-10 игр для Android стоимостью менее $5
Проверка авто в базе ГИБДД перед покупкой Проверка авто в базе ГИБДД перед покупкой
Бизнес-психология в онлайн-институте Smart Бизнес-психология в онлайн-институте Smart