想象控制台命令到PHP Imagick

时间:2016-01-06 09:08:26

标签: php imagick

任何人都可以解释我如何使用Imagick pecl将运行良好的imagick cli命令转换为PHP代码吗? 我对convert命令的语法不够熟悉,我很快就能做到这一点。

您可能无法阅读此文本堆,只是帮助将cli命令转换为PHP。 :)

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

我现在需要什么(以及想象力的来源):我需要在结果图像上移除那个白色背景,这样唯一的彩色图形就会在透明背景上留下一些模糊的边缘。

我在做什么:

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

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

  2. 所以我将来会使用一些透明面具。

    1. 将mask.png应用于从原版获得的彩色图像(green.php):

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

    2. 这些命令必须翻译成PHP。有人可以建议我吗?

1 个答案:

答案 0 :(得分:1)

我准备回答我的问题。

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

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

就是这样。我们在透明背景上有一个绿色的数字。