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;
?>
Imagick::colorizeImage
(PECL imagick 2.0.0)
Imagick::colorizeImage — Mezcla el color de relleno con la imagen
Descripción
Mezcla el color de relleno de cada píxel con la imagen.
Parámetros
-
colorize -
Objeto ImagickPixel o una cadena que contiene el color
-
opacity -
Objeto ImagickPixel o un valor float que contiene el valor de la opacidad. 1.0 es completamente opaco y 0.0 es completamente transparente.
Valores devueltos
Devuelve TRUE en caso de éxito.
Errores/Excepciones
Lanza ImagickException en caso de error.
Historial de cambios
| Versión | Descripción |
|---|---|
| 2.1.0 | Ahora se permite que una cadena represente el color como el primer parámetro y que un valor float represente el valor de la opacidad como el segundo parámetro. Versiones anteriores sólo permitían objetos ImagickPixel. |
php at lfbittencourt dot com ¶
1 year ago
talkol at gmail dot com ¶
1 year ago
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 ¶
4 years ago
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;
?>
