Imagick::colorizeImage

(PECL imagick 2.0.0)

Imagick::colorizeImageСмешивание цвета заливки с изображением

Описание

bool Imagick::colorizeImage ( mixed $colorize , mixed $opacity )

Смешивает цвет заливки с каждым пикселем изображения.

Список параметров

colorize

Объект ImagickPixel или строка содержащая цвет

opacity

Объект ImagickPixel или дробное число содержащее значение прозрачности. 1.0 означает без прозрачности, 0.0 означает полную прозрачность.

Возвращаемые значения

В случае успешной работы возвращает TRUE.

Ошибки

Вызывает ImagickException при ошибке.

Список изменений

Версия Описание
2.1.0 Для первого параметра разрешено передавать цвет в виде строки и указывать значение прозрачности во втором параметре. Предыдущие версии допускали только объект ImagickPixel.

Коментарии

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;
?>
2009-04-08 12:42:16
http://php5.kiev.ua/manual/ru/imagick.colorizeimage.html
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.
2011-12-28 09:19:28
http://php5.kiev.ua/manual/ru/imagick.colorizeimage.html
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(00$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;

?>
2012-05-11 16:26:10
http://php5.kiev.ua/manual/ru/imagick.colorizeimage.html
To improve upon "php at lfbittencourt dot com"'s solution, this one blends the composited color, and takes opacity into account as well.

<?php
class YourImagick extends Imagick
{
    public function 
colorize($color$alpha 1$composite_flag Imagick::COMPOSITE_COLORIZE)
    {
       
$draw = new ImagickDraw();

       
$draw->setFillColor($color);

       
$geometry $this->getImageGeometry();
       
$width $geometry['width'];
       
$height $geometry['height'];

       
$draw->rectangle(00$width$height);

       
$temporary = new Imagick();
       
$temporary->setBackgroundColor(new ImagickPixel('transparent'));
       
$temporary->newImage($width$height, new ImagickPixel('transparent'));
       
$temporary->setImageFormat('png32');
       
$temporary->drawImage($draw);

       
$alphaChannel $this->clone();
       
$alphaChannel->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
       
$alphaChannel->negateImage(falseImagick::CHANNEL_ALL);
       
$this->setImageClipMask($alphaChannel);

       
$clone $this->clone();
       
$clone->compositeImage($temporary$composite_flag00);
       
$clone->setImageOpacity($alpha);

       
$this->compositeImage($cloneImagick::COMPOSITE_DEFAULT00);
    }
}
?>
2013-12-18 14:24:15
http://php5.kiev.ua/manual/ru/imagick.colorizeimage.html
If you're looking for a solution to fill the image with a solid color, preserving background transparency, here is one way:

<?php
$im 
= new Imagick('image.png');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
$im->setImageBackgroundColor('color');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_SHAPE);
$im->writeImage('output.png');
$im->destroy();
?>
2014-03-22 16:35:00
http://php5.kiev.ua/manual/ru/imagick.colorizeimage.html
The solution published by "olav at redwall dot ee " was adding a black surround outside each non-transparent shape.

Here is my improved version :

<?php
public function colorize($color$alpha 1)
{
   
$geometry $this->getImageGeometry();
   
$width $geometry['width'];
   
$height $geometry['height'];
       
   
$draw = new ImagickDraw;
   
$draw->setFillColor($color);
   
$draw->rectangle(00$width$height);

   
$temporary = new Imagick;
   
$temporary->setBackgroundColor(new ImagickPixel('transparent'));
   
$temporary->newImage($width$height, new ImagickPixel('transparent'));
   
$temporary->setImageFormat('png32');
   
$temporary->drawImage($draw);
   
$temporary->compositeImage($thisImagick::COMPOSITE_COPYOPACITY00);
       
   
$this->setImageArtifact('compose:args', ($alpha 100) . '%,100%');
   
$this->compositeImage($temporaryImagick::COMPOSITE_DISSOLVE00);
}
?>
2022-12-01 15:09:24
http://php5.kiev.ua/manual/ru/imagick.colorizeimage.html

    Поддержать сайт на родительском проекте КГБ