|
|
|
| Поскольку библиотека GD не способна создавать анимированные gif-изображения, решил поставить ImageMagick и испробовать это дело. Установил программное обеспечение с оф. сайта (http://www.imagemagick.org/script/binary-releases.php) и на php установил модуль extension - php_imagick.dll (модуль pecl , взятый из сборки pecl5.2-win32-200808060430).
Теперь у меня доступны новые классы для обработки и создания изображений: Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator.
Кое-что о них нашел тут http://ru.php.net/manual/ru/book.imagick.php но многие из функций не описаны конкретно. Не то что многие, почти все! Поэтому, найти решение, как создать анимированное gif-изображение посредствам этих классов так и не удалось.
Если у кого уже есть опыт в этом деле, поделитесь пожалуйста.
Также нашел сайт с примерами использования: http://valokuva.org/?cat=1. Возможности впечатляют. | |
|
|
|
|
|
|
|
для: Dr Lines
(17.05.2009 в 04:54)
| | Кажется нашел )
сейчас буду пробоавть
http://valokuva.org/index.php?s=gif&submit=Go | |
|
|
|
|
|
|
|
для: Dr Lines
(17.05.2009 в 05:37)
| | Вот сделал готовое решение по реайзу gif анимации
<?
$animation = new Imagick(); //Этот объект будет содержать анимацию
$animation->setFormat("gif"); //Задание формата для изображений gif
$im = new Imagick('23.gif'); //анимированное изображение, risize кодорого будем осуществлять
$count_im = $im->getNumberImages(); //Получаем количество кадров в исходной анимации (23.gif)
$delay_im = $im->getImageDelay(); //Получаем задержку кадров в исходной анимации
$width_im = $im->getImageWidth(); //Получаем высоту
$height_im = $im->getImageHeight(); //Получаем ширину
$background_im = $im->getImageBackgroundColor(); //Получаем цвет фона исходного изображения
for($i=0; $i<$count_im; $i++ )
{
$im->previousImage(); //Отматываем кадры на начало. Наверно есть способ попроще %)
}
for($i=0; $i<$count_im; $i++ )
{
$animation->newImage( $width_im, $height_im, $background_im); //Создаем новый кадр
$animation->compositeImage($im, imagick::COMPOSITE_DEFAULT, 0, 0); //Накладываем кадр из исходного изображения в новый кадр
//imagick::COMPOSITE_DEFAULT - это способ наложения. Остальные способы перечислены тут http://ru.php.net/manual/ru/imagick.constants.php#imagick.constants.compositeop
$animation->thumbnailImage(200, 0); //Выполняется resize до 200 пикселей поширине и сколько получится по высоте (с соблюдением пропорций конечно)
$animation->setImageDelay($delay_im); //Установка задержки кадра.
$im->nextImage(); //Переход на следующий кадр.
}
header( "Content-Type: image/gif" );
echo $animation->getImagesBlob(); //Вывод изображения... если надо сохранить, то вызывается функция writeImage.
?>
|
| |
|
|
|
|
 1.9 Кб |
|
|
для: Dr Lines
(17.05.2009 в 08:37)
| | Вот еще простой класс создания GIF-анимации | |
|
|
|
|
 17.3 Кб |
|
|
для: Dr Lines
(17.05.2009 в 08:37)
| | Ваше решение не совсем корректно.
Вот Ваше решение, немножко переделанное, но его нужно немножко доделать
<?
$animation = new Imagick(); //Этот объект будет содержать анимацию
$anim1 = new Imagick(); //Этот объект будет содержать первый кадр
$animation->setFormat("gif"); //Задание формата для изображений gif
$im = new Imagick('23.gif'); //анимированное изображение, resize которого будем осуществлять
foreach ($im as $animation)
{
$animation->thumbnailImage(200, 0); //Выполняется resize до 200 пикселей поширине и сколько получится по высоте (с соблюдением пропорций конечно)
$animation->setImagePage( $animation->getImageWidth(), $animation->getImageHeight(), 0, 0 );
}
header( "Content-Type: image/gif" );
echo $animation->getImagesBlob(); //Вывод изображения... если надо сохранить, то вызывается функция writeImage.
?>
|
Этот скрипт работает почти со всеми видами .gif анимации, кроме прикрепленного сюда рисунка.
Или на хостинге картинок
Кто может помочь с этой проблемой??? | |
|
|
|
|
|
|
|
для: it_is_good
(31.12.2009 в 17:04)
| | Вроде нашел, вот эта функция coalesceImages(), но как ее использовать??? Весь инет перелопатил, но так и не нашел примера ее использования... | |
|
|
|
|
|
|
|
для: it_is_good
(31.12.2009 в 17:04)
| | DELETE | |
|
|
|