我正在尝试找到一种将3px白色笔画添加到大量png文件中的有效方法,以有效地使它们看起来像“贴纸”。我有一些示例代码可以很好地完成工作,但是我似乎无法正确进行裁剪。另外,笔触看起来有点像素化,我想知道是否有可能获得更清洁的边缘!
我做了很多互联网搜索,找到了一些示例代码,对其进行了调整,然后得出了几乎与我想要的东西相似的东西。图像始终是PNG,因此我从命令行查看了诸如inkscape / gimp之类的东西,但是意识到我应该能够仅使用终端机上的convert
来做到这一点。
convert in.png \
\( -clone 0 -alpha extract -threshold 0 \) \
\( -clone 1 -blur 10x65000 -threshold 0 \) \
\( -clone 2 -fill red -opaque white \) \
\( -clone 3 -clone 0 -clone 1 -alpha off -compose over -composite \) \
-delete 0,1,3 +swap -alpha off -compose copy_opacity -composite \
out.png
在:
输出:
理想地:答案 0 :(得分:2)
您的主要问题是您的对象和图像的侧面之间没有足够的空间。您只需要添加透明的图像,然后在以后删除所有多余的图像即可。
在ImageMagick 6中,这应该做您想要的。
1) read the input
2) add a larger border than you need to add
3) extract the alpha channel from the input and dilate it by the amount of border (in this case 10)
4) copy the previous image and color the white as red and the black as transparent
5) composite the original over the red/transparent image
6) delete the original and the red/transparent image
7) swap the composite with the dilated alpha channel and put the dilated alpha channel into the alpha channel of the previous image
8) trim the excess transparency from the border padding
9) save to output
convert img.png \
-bordercolor none -border 20 \
\( -clone 0 -alpha extract -morphology dilate diamond:10 \) \
\( -clone 1 -fuzz 30% -fill red -opaque white -fill none -opaque black \) \
\( -clone 2,0 -compose over -composite \) \
-delete 0,2 \
+swap -alpha off -compose copy_opacity -composite \
-trim +repage \
result.png
对于ImageMagick 7,将convert替换为magick。
如果在类似Unix的系统上,您可能会对我的bash ImageMagick脚本(http://www.fmwconcepts.com/imagemagick/index.php处的轮廓)感兴趣
通过将disk:10替换为disk:10可以获得更好的结果