I have a trouble with this method because think that quantum range is 0 - 255.
But quantum range for levelImage is 0-65535. You can get quantum range with Imagick::getQuantumRange
There is a right piece of code
$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
Укажите любую константу канала, которая соответствует вашему режиму канала. Чтобы применить более чем к одному каналу, объедините константы типа канала с помощью побитовых операторов. Обратитесь к этому списку констант канала.
Функция в случае успешной работы возвращает 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();
}
?>
I have a trouble with this method because think that quantum range is 0 - 255.
But quantum range for levelImage is 0-65535. You can get quantum range with Imagick::getQuantumRange
There is a right piece of code
$img->levelImage (0, 1.0, 65535);