我对这个方法有点问题,因为它认为量子范围是 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);