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