在 imagick 3.x 中(尚未检查 2.x),这返回一个 imagemagick 对象而不是布尔值。
<?php
$image = new Imagick('myanimation.gif');
$image = $image->optimizeImageLayers(); // 不返回布尔值!
$image->writeImage('optimized.gif');
(PECL imagick 2, PECL imagick 3)
Imagick::optimizeImageLayers — 移除图像的重复部分以进行优化
比较 GIF 序列中每个图像与之前图像的处置形式。由此尝试选择最小的裁剪图像来替换每个帧,同时保留动画效果。如果 Imagick 是针对 ImageMagick 版本 6.2.9 或更高版本编译的,则可以使用此方法。
此函数没有参数。
成功时返回 true
。
发生错误时抛出 ImagickException。
示例 #1 使用 Imagick::optimizeImageLayers()
读取、优化和写入 GIF 图像
<?php
/* 创建新的 imagick 对象 */
$im = new Imagick("test.gif");
/* 优化图像层 */
$im->optimizeImageLayers();
/* 将图像写回 */
$im->writeImages("test_optimized.gif", true);
?>
在 imagick 3.x 中(尚未检查 2.x),这返回一个 imagemagick 对象而不是布尔值。
<?php
$image = new Imagick('myanimation.gif');
$image = $image->optimizeImageLayers(); // 不返回布尔值!
$image->writeImage('optimized.gif');