- PHP 手册
- 函数参考
- 图像生成和处理
- ImageMagick
- Imagick
Imagick::contrastStretchImage
(PECL imagick 2, PECL imagick 3)
Imagick::contrastStretchImage — Enhances the contrast of a color image
说明
public Imagick::contrastStretchImage(float$black_point
, float $white_point
, int $channel
= Imagick::CHANNEL_DEFAULT): bool
Enhances the contrast of a color image by adjusting the pixels color to span the entire range of colors available. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。
参数
-
black_point
-
The black point.
-
white_point
-
The white point.
-
channel
-
Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators.
Imagick::CHANNEL_ALL
. Refer to this list of channel constants.
返回值
成功时返回 true
。
User Contributed Notes 2 notes
up down 1 SkepticaLee ¶8 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
down
0
SkepticaLee ¶8 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.
add a note
官方地址:https://www.php.net/manual/en/imagick.contraststretchimage.php