imagick 控制台命令进入 PHP Imagick

imagick console commands into PHP Imagick

任何人都可以向我解释如何使用 Imagick pecl 将运行良好的 imagick cli 命令转换为 PHP 代码吗? 我对 convert 命令的语法还不够熟悉,我很难快速完成它。

你可能看不懂下面这堆文字,只是帮助将cli命令转换为PHP。 :)

我有一个部分透明的图形位于不透明的白色背景(原始图像)上。填充透明图形一些背景 color/image 我将在白色背景上有许多彩色图形。

我现在需要什么(以及 imagick 的用武之地):我需要删除结果图像上的白色背景,这样唯一的彩色图形就会保留在那里,透明背景上有一些模糊的边缘。

我在做什么:

  1. 我用黑色填充原始图像,以便在白色背景上获得更多对比度的黑色图形。接下来,使用命令删除白色背景:

    convert ./black.png -fuzz 70% -fill none -floodfill +0+0 white -channel A -blur 0x1 ./mask.png

所以我有一些透明面具可以在以后使用。

  1. 应用mask.png到一些彩色图像(green.php)也是从原始图像中得到的:

    convert ./green.png -alpha Off ./mask.png -compose CopyOpacity -composite PNG32:result.png

该命令必须翻译成 PHP。谁能给我建议?

我准备好回答我的问题了。

准备原始图像以将其用作遮罩。将部分透明图形设为黑色:

$blank = new \Imagick('./original.png');
$blank->setimagebackgroundcolor('#000000');

用黑色的空白制作面具。移除不透明的白色背景并使其完全透明:

$mask = $blank->flattenImages();
$mask->floodfillpaintimage('none', 30000, '#FFFFFF', 1, 1, false, \Imagick::CHANNEL_ALPHA);
$mask->blurImage(0, 1, \Imagick::CHANNEL_ALL);

所以我们有一个蒙版图像,它只包含我们需要的图形(黑色)。 现在我们想要一个绿色的人物,拿走吧:

$greenBlank = new \Imagick('./original.png');
$greenBlank->setimagebackgroundcolor('#00FF00');
$green = $greenBlank->flattenImages();

现在将准备好的蒙版应用到我们的 $green 上。

$green->compositeImage($mask, \Imagick::COMPOSITE_COPYOPACITY, 0, 0);

就是这样。我们在透明背景上得到了一个绿色图形。