我使用此方法时遇到问题,因为我认为量子范围是 0 - 255。
但levelImage的量子范围是0-65535。您可以使用Imagick::getQuantumRange获取量子范围
这是一段正确的代码
$img->levelImage (0, 1.0, 65535);
(PECL imagick 2, PECL imagick 3)
Imagick::levelImage — 调整图像的色阶
$blackPoint
,$gamma
,$whitePoint
,$channel
= Imagick::CHANNEL_DEFAULT通过将位于指定白点和黑点之间的颜色缩放至全部可用的量子范围来调整图像的色阶。提供的参数表示黑点、中间点和白点。黑点指定图像中最暗的颜色。比黑点更暗的颜色将设置为零。中间点指定要应用于图像的伽马校正。白点指定图像中最亮的颜色。比白点更亮的色彩将设置为最大量子值。
blackPoint
图像黑点
gamma
伽马值
whitePoint
图像白点
channel
提供任何对您的通道模式有效的通道常量。要应用于多个通道,请使用按位运算符组合channeltype常量。请参考此通道常量列表。
成功时返回 true
。
错误时抛出ImagickException。
示例 #1 Imagick::levelImage()
<?php
function levelImage($blackPoint, $gamma, $whitePoint) {
$imagick = new \Imagick();
$imagick->newPseudoimage(500, 500, 'gradient:black-white');
$imagick->setFormat('png');
$quantum = $imagick->getQuantum();
$imagick->levelImage($blackPoint / 100 , $gamma, $quantum * $whitePoint / 100);
header("Content-Type: image/png");
echo $imagick->getImageBlob();
}
?>
我使用此方法时遇到问题,因为我认为量子范围是 0 - 255。
但levelImage的量子范围是0-65535。您可以使用Imagick::getQuantumRange获取量子范围
这是一段正确的代码
$img->levelImage (0, 1.0, 65535);