以下Imagemagick命令的Imagick等效是什么?
convert i.jpg -set colorspace RGB ( -clone 0 -fill black -colorize 100% ) ( -clone 0 colorspace gray -negate ) -compose blend -define compose:args=70,30 -composite o.jpg
我做了以下Imagick命令,但它似乎不一样
$img = new Imagick("i.jpg");
$img->setImageColorspace(Imagick::COLORSPACE_RGB);
$clone1 = $img->clone();
$clone1->colorizeImage('black', 1.0);
$clone2 = $img->clone();
$clone2->setImageColorspace(Imagick::COLORSPACE_GRAY);
$clone2->negateImage(0);
$img->setOption('compose:args', '70x30');
$img->compositeImage($clone1, Imagick::COMPOSITE_BLEND, 0, 0);
$img->compositeImage($clone2, Imagick::COMPOSITE_BLEND, 0, 0);
$img->writeImage("o.jpg");
我在哪里犯错?
答案 0 :(得分:0)
在大多数情况下,你所拥有的是正确的。需要解决两个小问题以匹配CLI结果。
在读取setOption
对象中的任何图像之前移动Imagick
行。
$img = new Imagick();
$img->setOption('compose:args', '70x30');
$img->readImage("i.jpg");
// ...
将黑色着色为100%通常会产生纯黑色图像。无论出于何种原因,MagickColorizeImage方法都没有效果。有一些使用ImagickDraw
&的解决方法。 PHP.net documentation上的评论中列出的背景颜色分配。我建议您重新访问第一张$clone1
图片。