International PHP Conference 2019 - Spring Edition


(PECL imagick 2.0.0)

Imagick::contrastStretchImageAméliore le contraste d'une image


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

Améliore le contraste d'une image en ajustant les couleurs des des pixels sur l'ensemble de la gamme des couleurs. Cette méthode n'est disponible que si Imagick a été compilé avec ImageMagick version 6.2.9 ou supérieur.

Liste de paramètres


Le point noir.


Le point blanc.


Fournit une constante de canal valide pour votre mode de canal. Pour utiliser plus d'un canal, combinez les constantes de type de canal en utilisant les opérateurs de bits. Par défaut, c'est Imagick::CHANNEL_ALL. Reportez-vous à la liste des constantes de canal.

Valeurs de retour

Retourne TRUE en cas de succès.

add a note add a note

User Contributed Notes 2 notes

4 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\">";
4 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