Imagick
在线手册:中文  英文

Imagick::flattenImages

(PECL imagick 2.0.0)

Imagick::flattenImagesMerges a sequence of images

说明

Imagick Imagick::flattenImages ( void )

Merges a sequence of images. This is useful for combining Photoshop layers into a single image.

返回值

成功时返回 TRUE

错误/异常

错误时抛出 ImagickException。


Imagick
在线手册:中文  英文

用户评论:

Samuel Fine (hi at samuelfine dot com) (2011-12-05 09:32:57)

This is also useful for accurately converting .ico files to .png. (Other types as well, in theory, but I've only tested ico->png.) Simply using setFormat will create a valid .png file, but will result in image artifacts if the original .ico had any transparency. The following code will create an accurate copy:

<?php

$im 
= new Imagick();

// When dealing with .ico files, make sure to setFormat before loading the image or you'll get a nasty exception. See https://bugs.php.net/bug.php?id=58515 for more details.
$im->setFormat("ico");

$im->readImage("favicon.ico");

$im $im->flattenImages(); // Thanks for the tip, Jairu5!

$im->setFormat("png");

$new fopen("favicon.png""w");
$im->writeImageFile($new);
$im->clear();
$im->destroy();

?>

Jairu5 (2010-11-30 08:29:34)

Note that the function returns an Imagick object and does not modify the existing object. Below is my code for converting a PNG with transparency into a JPG with a background color. This code illustrates the difference.

<?php

$im 
= new Imagick('image.png');
$im->setImageBackgroundColor('white');

$im->flattenImages(); // This does not do anything.
$im $im->flattenImages(); // Use this instead.

$im->setImageFormat('jpg');
$im->writeImage('image.jpg');

?>

易百教程