Imagick::coalesceImages

(PECL imagick 2, PECL imagick 3)

Imagick::coalesceImages合成一组图像

说明

public Imagick::coalesceImages(): Imagick

合成一组图像,同时尊重任何页面偏移和处理方法。GIF、MIFF 和 MNG 动画序列通常以图像背景开始,每个后续图像的大小和偏移不同。返回一个新的 Imagick 对象,其中序列中的每个图像都与第一个图像的大小相同,并且与序列中的下一个图像合成。

参数

此函数没有参数。

返回值

成功时返回一个新的 Imagick 对象。

错误/异常

错误时抛出 ImagickException 异常。

添加笔记

用户贡献的笔记 4 笔记

ktr
11 年前
调整大小和/或裁剪动画 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);
?>
匿名
8 年前
如果你想打开一个动画 GIF,不要用 $imagick->pingImage() 来 ping 图像,你将获得与 GIF 中的帧数相同数量的帧,添加到开头 - 但它们都是黑色带条纹。所以你最终会拥有 GIF 实际拥有帧数的两倍。
vikomic at gmail dot com
13 年前
以下是如何调整 GIF 大小的示例。

<?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);

// 可以添加更多 GIF
$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();
?>

你可以在此示例中使用任何调整大小方法 (resizeImage)。

此示例在 *imagick 模块版本 2.2.1-dev* 中运行良好,但在 *imagick 模块版本 3.0.1* 中无法正常运行。
dikirill
11 年前
我尝试了下面的示例,但无法使它们正常工作。并且发现我的 php-imagick 扩展的版本是 3.1.0RC1,看起来它在 "writeImages" 函数中存在错误,降级到 3.0.1 帮助了我。
To Top