2024年PHP开发者大会日本站

Imagick::levelImage

(PECL imagick 2, PECL imagick 3)

Imagick::levelImage调整图像的色阶

描述

public Imagick::levelImage(
    float $blackPoint,
    float $gamma,
    float $whitePoint,
    int $channel = Imagick::CHANNEL_DEFAULT
): bool

通过将位于指定白点和黑点之间的颜色缩放至全部可用的量子范围来调整图像的色阶。提供的参数表示黑点、中间点和白点。黑点指定图像中最暗的颜色。比黑点更暗的颜色将设置为零。中间点指定要应用于图像的伽马校正。白点指定图像中最亮的颜色。比白点更亮的色彩将设置为最大量子值。

参数

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();
}

?>

添加注释

用户贡献的注释 1 条注释

7
Maxim Lovchikov
13年前
我使用此方法时遇到问题,因为我认为量子范围是 0 - 255。
但levelImage的量子范围是0-65535。您可以使用Imagick::getQuantumRange获取量子范围
这是一段正确的代码

$img->levelImage (0, 1.0, 65535);
To Top