PHP Conference Japan 2024

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

提供適用於您的通道模式的任何通道常數。若要套用至多個通道,請使用位元運算子組合通道類型常數。Imagick::CHANNEL_ALL。請參閱此 通道常數 清單。

回傳值

成功時回傳 true

新增註解

使用者貢獻註解 2 則註解

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\">";
?>
0
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