getQuantumRange() can be handy here:
<?php
$i = new Imagick($imageFile);
$max = $i->getQuantumRange();
$max = $max["quantumRangeLong"];
$i->thresholdImage(0.77 * $max);
?>
(PECL imagick 2, PECL imagick 3)
Imagick::thresholdImage — Changes the value of individual pixels based on a threshold
$threshold
, int $channel
= Imagick::CHANNEL_DEFAULT
) : boolChanges the value of individual pixels based on the intensity of each pixel compared to threshold. The result is a high-contrast, two color image.
threshold
channel
成功时返回 true
。
Example #1 Imagick::thresholdImage()
<?php
function thresholdimage($imagePath, $threshold, $channel) {
$imagick = new \Imagick(realpath($imagePath));
$imagick->thresholdimage($threshold * \Imagick::getQuantum(), $channel);
header("Content-Type: image/jpg");
echo $imagick->getImageBlob();
}
?>
getQuantumRange() can be handy here:
<?php
$i = new Imagick($imageFile);
$max = $i->getQuantumRange();
$max = $max["quantumRangeLong"];
$i->thresholdImage(0.77 * $max);
?>