Imagick::contrastStretchImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastStretchImageMelhora o contraste de uma imagem colorida

Descrição

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

Melhora o contraste de uma imagem colorida ajustando a cor dos pixels para abranger toda a gama de cores disponíveis. Este método estará disponível se a extensão Imagick tiver sido compilada com a ImageMagick versão 6.2.9 ou superior.

Parâmetros

black_point

O ponto preto.

white_point

O ponto branco.

channel

Forneça qualquer constante de canal válida para o modo de canal. Para aplicar a mais de um canal, combine constantes de tipo de canal usando operadores bit a bit (ex.: Imagick::CHANNEL_ALL). Consulte esta lista de constantes de canal.

Valor Retornado

Retorna true em caso de sucesso.

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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