将imagemagick命令行更改为php imagick

时间:2013-01-18 11:23:24

标签: php imagemagick imagick

出于性能原因(exe中的exec有时非常慢)我将大部分的imagemagick命令转换为php的imagick。

我在这里阅读了关于-channel和-level的文档: http://www.imagemagick.org/script/command-line-options.php#channelhttp://www.imagemagick.org/script/command-line-options.php#level

特别是关于黑色,白色和伽玛值:

  

给定一个,两个或三个用逗号分隔的值:黑点,白点,伽玛(例如:10,250,1.0或2%,98%,0.5)。黑点和白点的范围从0到QuantumRange,或0到100%;如果省略白点,则将其设置为(QuantumRange - black_point),以使对比度变化居中。如果字符串中的任何位置都存在%符号,则黑点和白点都是整个颜色范围的百分比。 Gamma将对值进行-gamma调整。如果省略,则默认为1.0(无伽马校正)。

     

在正常使用(-level)中,图像值被拉伸,以便原始图像中给定的“black_point”值设置为零(或黑色),而给定的“white_point”值设置为QuantumRange(或白色) )。这为您提供了对图像的直接对比度调整。然后将调整所得图像的“伽玛”。

基于此,我试图改变

convert a.jpg -channel R -level 33% -channel G -level 33% b.jpg

$quantumRange = $image->getQuantumRange();
//get the 33%
$blackPoint = $quantumRange ['quantumRangeLong']/100*33;
//to get the middle ground between black and white - also tried with $quantumRange['quantumRangeLong']
$whitePoint = $quantumRange ['quantumRangeLong'] - $blackPoint;
$gamma = 1;

$image->levelImage ( $blackPoint , $gamma , $whitePoint , Imagick::CHANNEL_RED);
$image->levelImage ( $blackPoint , $gamma , $whitePoint , Imagick::CHANNEL_GREEN);

但结果确实看起来很不一样......那里的任何专家都可以指出imagick如何执行其频道级别?

1 个答案:

答案 0 :(得分:3)

我在计算机上试过它,PHP和命令行版本非常相似:

original
原始

command line
命令行

enter image description here
PHP

我没有看到您的脚本有任何问题,但您可以尝试使用它来查看它是否有所不同。

$image = new Imagick();
$quantum_range = $image->getQuantumRange();
$max_quantum = $quantum_range["quantumRangeLong"];
$image->readImage("rose.jpg");
$black_point = $max_quantum * .33;
$white_point = $max_quantum - $black_point;
$gamma = 1.0;
$image->levelImage($black_point, $gamma, $white_point, Imagick::CHANNEL_RED);
$image->levelImage($black_point, $gamma, $white_point, Imagick::CHANNEL_GREEN);
header("Content-type: image/jpeg");
echo $image;
$image->writeImage("php.jpg");

如果它仍然不能正常工作,这里是我的ImageMagick版本和PHP的ImageMagick模块:

$ convert -version
Version: ImageMagick 6.7.9-10 2012-10-10 Q16 http://www.imagemagick.org
Array ( [versionNumber] => 1632
        [versionString] => ImageMagick 6.6.0-4 2012-05-03 Q16
                           http://www.imagemagick.org )