PHP 8.4.2 Released!

Imagick::contrastStretchImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastStretchImageПовышает контрастность цветного изображения

Описание

public Imagick::contrastStretchImage(float $black_point, float $white_point, int $channel = Imagick::CHANNEL_DEFAULT): bool

Повышает контрастность цветного изображения, регулируя цвет пикселей для охвата всего диапазона доступных цветов. Метод доступен, если модуль Imagick скомпилировали с версией ImageMagick 6.2.9 или старше.

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

black_point

Чёрная точка.

white_point

Белая точка.

channel

Укажите любую константу CHANNEL, которая подходит для вашего режима канала. Для применения более чем к одному каналу объедините константы типа CHANNEL с помощью побитовых операторов. Imagick::CHANNEL_ALL. Обратитесь к этому списку констант CHANNEL.

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

Функция в случае успешной работы возвращает true.

Добавить

Примечания пользователей 2 notes

up
1
SkepticaLee
10 years ago
The black and white points refer to the absolute number of pixels. In the following example a coloured image is first desaturated (turned into a grey scale image) and then the darkest 90% of pixels are turned black, the brightest 5% are made white, and those between 90% and 95% are grey-scaled:

<?php
$im
= new Imagick ("some_image.jpg");
list (
$width, $height) = array_values ($im->getImageGeometry ());
$im->modulateImage (100, 0, 100);
$im->contrastStretchImage ($width * $height * 0.90, $width * $height * 0.95);
$im->writeImage ("temp.jpg");
echo
"<img src=\"temp.jpg\">";
?>
up
0
SkepticaLee
10 years ago
Trying to figure out what values the black and white points can have and what their effects are nearly drove me around the bend. However, this works:

<?php
$width
= 480;
$height = 360;
$mask = new Imagick ();
$mask->newImage ($width, $height, "black");
$draw = new ImagickDraw ();
$draw->setFillColor ("white");
$draw->ellipse ($width / 2, $height / 2, $width * 5 / 12, $height * 5 / 12, 0, 360);
$mask->drawImage ($draw);
$mask->blurImage (0, 50);
$mask->contrastStretchImage (10, 125000);
$mask->writeImage ("mask.png");
?>

The result will be a vignette mask with the pixels in the corner being pure black, and the ones in the middle pure white (which is not the case if the line is commented out). Reducing the white value to, say, 100, turns most of the grey pixels white.
To Top