(PECL imagick 2.0.0)
Imagick::colorizeImage — Blends the fill color with the image
Blends the fill color with each pixel in the image.
colorize
ImagickPixel object or a string containing the colorize color
opacity
ImagickPixel object or an float containing the opacity value. 1.0 is fully opaque and 0.0 is fully transparent.
成功时返回 TRUE
。
错误时抛出 ImagickException。
版本 | 说明 |
---|---|
2.1.0 | Now allows a string representing the color as the first parameter and a float representing the opacity value as the second parameter. Previous versions allow only an ImagickPixel objects. |
php at lfbittencourt dot com (2012-05-11 13:26:10)
Do you want a color overlay with TRUE opacity control? Try this:
<?php
class YourImagick extends Imagick
{
public function colorize($color, $alpha = 1)
{
$draw = new ImagickDraw();
$draw->setFillColor($color);
if (is_float($alpha)) {
$draw->setFillAlpha($alpha);
}
$geometry = $this->getImageGeometry();
$width = $geometry['width'];
$height = $geometry['height'];
$draw->rectangle(0, 0, $width, $height);
$this->drawImage($draw);
}
}
?>
How to use:
<?php
$imagick = new YourImagick('example.png');
$imagick->colorize('#ffcc00', 0.35);
header('Content-type: image/png');
echo $source;
?>
talkol at gmail dot com (2011-12-28 07:19:28)
When you're using an image with an alpha channel (for example a transparent png), a value of 1.0 will return a completely transparent image, but a value of 1 works just fine.
lsmartinez at gmail dot com (2009-04-08 09:42:16)
simplest example
<?php
$nombre = '001-4-0043.jpg';
$img = new Imagick($nombre);
$img->negateImage(false);
//$pixblu = new ImagickPixel('#000040');
$img->colorizeImage('#0000b0',1.0);
header('content-type: image/jpeg');
echo $img;
?>