PHP.mk документација

Imagick::colorizeImage

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

imagick.colorizeimage.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека imagick.colorizeimage.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Imagick::colorizeImage

Референца за `imagick.colorizeimage.php` со подобрена типографија и навигација.

imagick.colorizeimage.php

Imagick::colorizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::colorizeImageBlends the fill color with the image

= NULL

public Imagick::colorizeImage(mixed $colorize, mixed $opacity, bool $legacy = false): bool

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.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успешен исход.

Errors/Exceptions

Фрла ImagickException при грешка.

Дневник на промени

Верзија = NULL
PECL imagick 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.

Примери

Пример #1 Imagick::colorizeImage()

<?php
function colorizeImage($imagePath, $color, $opacity) {
$imagick = new \Imagick(realpath($imagePath));
$opacity = $opacity / 255.0;
$opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
$imagick->colorizeImage($color, $opacityColor);
header("Content-Type: image/jpg");
echo
$imagick->getImageBlob();
}

?>

Белешки од корисници 6 белешки

Alex Lokhman [VisioN]
12 години пред
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();
?>
php at lfbittencourt dot com
пред 13 години
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;

?>
olav at redwall dot ee
12 години пред
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(0, 0, $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(false, Imagick::CHANNEL_ALL);
        $this->setImageClipMask($alphaChannel);

        $clone = $this->clone();
        $clone->compositeImage($temporary, $composite_flag, 0, 0);
        $clone->setImageOpacity($alpha);

        $this->compositeImage($clone, Imagick::COMPOSITE_DEFAULT, 0, 0);
    }
}
?>
adrien at unik dot solutions
3 години пред
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(0, 0, $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($this, Imagick::COMPOSITE_COPYOPACITY, 0, 0);
        
    $this->setImageArtifact('compose:args', ($alpha * 100) . '%,100%');
    $this->compositeImage($temporary, Imagick::COMPOSITE_DISSOLVE, 0, 0);
}
?>
talkol at gmail dot com
пред 14 години
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
пред 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;
?>
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.