PHP 8.1.0 Beta 1 available for testing

Imagick::coalesceImages

(PECL imagick 2, PECL imagick 3)

Imagick::coalesceImagesBir görüntü kümesini tek bir görüntü olarak birleştirir

Açıklama

public Imagick::coalesceImages(): Imagick

Bir görüntü kümesini sayfa başlangıçlarını ve sıralama yöntemlerini hesaba katarak birleştirir. GIF, MIFF ve MNG canlandırma dizileri genellikle bir görüntü artalanı ile başlar ve sonraki her görüntüde boyut ve başlangıç değişiklik gösterir. Görüntü dizisindeki her görüntünün kendi boyutuyla sonraki görüntüyle birleştirilerek yer aldığı yeni bir Imagick nesnesi döner.

Değiştirgeler

Bu işlevin değiştirgesi yoktur.

Dönen Değerler

Başarı durumunda yeni bir Imagick nesnesi döner.

Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

add a note add a note

User Contributed Notes 4 notes

up
10
ktr
8 years ago
resize and/or crop an animated GIF

<?php
$image
= new Imagick($file_src);

$image = $image->coalesceImages();

foreach (
$image as $frame) {
 
$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($file_dst, true);
?>
up
3
vikomic at gmail dot com
10 years ago
Here goes an exaple how to resize GIF-s.

<?php
$imagick
= new Imagick("original.gif");

$format = $imagick->getImageFormat();
if (
$format == 'GIF') {
 
$imagick = $imagick->coalesceImages();
  do {
    
$imagick->resizeImage(120, 120, Imagick::FILTER_BOX, 1);
  } while (
$imagick->nextImage());
 
$imagick = $imagick->deconstructImages();
 
$imagick->writeImages('new_120x120.gif', true);

 
// can be added some more gifs
 
$imagick = $imagick->coalesceImages();
  do {
    
$imagick->resizeImage(100, 100, Imagick::FILTER_BOX, 1);
  } while (
$imagick->nextImage());
 
$imagick = $imagick->deconstructImages();
 
$imagick->writeImages('new_100x100.gif', true);
}

$imagick->clear();
$imagick->destroy();
?>

You can use any resize method (resizeImage) with this example.

This example works fine with *imagick module version 2.2.1-dev*, but doesn't work correctly with *imagick module version 3.0.1*.
up
1
Anony
5 years ago
If you wish to open an animated gif, don't ping the image with $imagick->pingImage(), you will get the same amount of frames you have in the gif, added to the start - but they're all black with stripes. So you have then double the amounts of frames the gif actually has.
up
-6
dikirill
8 years ago
I tried examples below, and couldn't make them work. And found that version of my php-imagick extension is 3.1.0RC1, and looks like it's buggy in function "writeImages", downgrade to 3.0.1 helped me.
To Top