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

提供任何对您的通道模式有效的通道常量。要应用于多个通道,请使用按位运算符组合 channeltype 常量。 Imagick::CHANNEL_ALL。参考此 通道常量列表

返回值

成功时返回 true

添加备注

用户贡献的备注 2 个备注

SkepticaLee
10 年前
黑点和白点指的是像素的绝对数量。在以下示例中,彩色图像首先被去饱和(转换为灰度图像),然后最暗的 90% 的像素被转为黑色,最亮的 5% 被转为白色,介于 90% 和 95% 之间的像素被灰度化。

<?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\">";
?>
SkepticaLee
10 年前
试图弄清楚黑点和白点可以取什么值以及它们的效果是什么,差点让我崩溃。不过,这个方法有效

<?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");
?>

结果将是一个渐晕蒙版,角落的像素为纯黑色,中间的像素为纯白色(如果注释掉该行则不会出现这种情况)。将白色值降低到,比如 100,会将大部分灰色像素变为白色。
To Top