CascadiaPHP 2024


(PECL imagick 2, PECL imagick 3)

Imagick::contrastStretchImageMejora el contraste de una imagen en color


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

Mejora el contraste de una imagen en color ajustando los colores de los píxeles de color para abarcar el rango completo de los colores disponibles. Este método está disponible si Imagick ha sido compilado con la versión 6.2.9 o superior de ImageMagick.



El punto blanco.


El punto negro.


Proporcione cualquier constante de canal que sea válida para su modo de canal. Para aplicar más de un canal, combine las constantes channeltype usando operadores a nivel de bits. Imagick::CHANNEL_ALL. Consulte esta lista de constantes de canal.

Valores devueltos

Devuelve true en caso de éxito.

add a note

User Contributed Notes 2 notes

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:

= 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");
"<img src=\"temp.jpg\">";
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:

= 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