什么是Imagick相当于以下Imagemagick命令?

时间:2014-01-20 09:16:56

标签: php imagemagick imagick imagemagick-convert

以下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");

我在哪里犯错?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,你所拥有的是正确的。需要解决两个小问题以匹配CLI结果。

第一

在读取setOption对象中的任何图像之前移动Imagick行。

$img = new Imagick();
$img->setOption('compose:args', '70x30');
$img->readImage("i.jpg");
// ...

谢胜利

将黑色着色为100%通常会产生纯黑色图像。无论出于何种原因,MagickColorizeImage方法都没有效果。有一些使用ImagickDraw&的解决方法。 PHP.net documentation上的评论中列出的背景颜色分配。我建议您重新访问第一张$clone1图片。