我正在尝试在透明 png 的内容周围加上白色描边。我已经用下面的代码成功地完成了这个,但是它应用了一个内部笔划,所以它实际上覆盖了 png 的外边缘并且看起来很糟糕。
外笔划代号:
$alpha = clone $overlay;
$alpha->separateImageChannel(Imagick::CHANNEL_ALPHA);
$alpha->negateImage(true);
$alpha_width = $alpha->getImageWidth();
$alpha_height = $alpha->getImageHeight();
$alpha->edgeImage(10);
$alpha->opaquePaintImage("white","white",6500,FALSE);
$alpha->transparentPaintImage("black",0.0,0,FALSE);
$overlay->compositeImage($alpha,Imagick::COMPOSITE_DEFAULT,0,0);
我尝试将边缘大小更改为负数,希望它会变成一个外部笔画,但没有。
我还发现有一种叫做 EdgeOut 的形态学方法可以满足我的要求。但是,我在 PHP 手册中找不到任何关于如何使用它的信息。我尝试了以下操作,但出现错误(未定义的类常量'MORPHOLOGY_EDGEOUT')
$alpha->morphology(\Imagick::MORPHOLOGY_EDGEOUT, 2, $kernel);