【问题标题】:imagick console commands into PHP Imagickimagick 控制台命令到 PHP imagick
【发布时间】:2016-01-07 11:07:12
【问题描述】:

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

您可能不会阅读下面的这堆文本,只是帮助将 cli 命令转换为 PHP。 :)

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

我现在需要的(以及 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。谁能给我建议?

【问题讨论】:

    标签: php imagick


    【解决方案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);
    

    就是这样。我们有一个透明背景上的绿色图形。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 2011-02-21
      • 1970-01-01
      • 2019-12-20
      • 2013-01-02
      • 2019-07-10
      • 2020-04-14
      • 2015-11-16
      相关资源
      最近更新 更多