Раздел вопрос-ответ Как обрезать gif изображение на php imagick?

Как обрезать gif изображение с помощью imagick?

share

1 ответ

Вопрос решился:

$imagick = new Imagick('file.gif');
$image = $imagick->coalesceImages();

$crop_w = 20;
$crop_h = 20;
$crop_y = 0;
$size_w = 20;
$size_h = 20;
foreach ($image as $frame) {
	$width = $frame->getImageWidth();
	$crop_x = $width - 20;
	$frame->cropImage($crop_w, $crop_h, $crop_x, $crop_y);
	$frame->thumbnailImage($size_w, $size_h);
	$frame->setImagePage($size_w, $size_h, 0, 0);
}

$image = $image->deconstructImages();
$image->writeImages('new.gif', true);

Принцип обрезки gif на imagick точно такой же, как и обычных jpg, png изображений за одним исключением:

нужно идти в цикле по каждому кадру и обрезать каждый кадр, чтобы в финальном изображении сохранились все кадры и анимация, а не только один статический кадр.

Imagick::coalesceImages



Соединяет набор изображений, каждое из которых может иметь свой размер, смещение и время задержки. Возвращает объект класса Imagick с последовательностью изображений, где каждое изображение имеет тот же размер, что и первое изображение.


При ошибке вылетает ImagickException.

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться