ImageMagick:如何为特定边缘创建撕裂页面效果?

Flu*_*lux 4 imagemagick

ImageMagick 文档提供了有关如何创建撕裂页面效果的指南 ( https://www.imagemagick.org/Usage/thumbnails/#torn )。然而,在他们的实施过程中,所有的边缘都被撕裂了。假设我只想撕掉图像的底部或顶部部分。我如何使用 ImageMagick 实现这样的事情?

emc*_*lle 5

只需使用运算符即可增长顶部和侧面-extent

convert zelda.png -background pink -extent 148x138-10-10  extent.png
Run Code Online (Sandbox Code Playgroud)

(添加粉红色背景以提高堆栈上的可见性)

范围.png

应用使用文档中的效果。

convert extent.png \( +clone -alpha extract -virtual-pixel black \
    -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 \) \
    -alpha off -compose Copy_Opacity -composite torn.png
Run Code Online (Sandbox Code Playgroud)

撕裂.png

然后裁剪回原始图像大小。

convert torn.png -crop 128x129+10+10 output.png
Run Code Online (Sandbox Code Playgroud)

输出.png

更新

如果您不想使用几何图形,可以使用-border, -shave&的组合-chop

convert zelda.png -bordercolor pink  -border 10x10 -gravity South -chop 0x10  extent.png
convert extent.png \( +clone -alpha extract -virtual-pixel black \
    -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 \) \
    -alpha off -compose Copy_Opacity -composite torn.png
convert torn.png -shave 10x -chop 0x10 output.png
Run Code Online (Sandbox Code Playgroud)

..当然,这一切都可以通过一个命令来完成。

convert zelda.png -bordercolor pink  -border 10x10 -gravity South -chop 0x10  \
    \( +clone -alpha extract -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% \
    -spread 1 -blur 0x.7 \) -gravity Forget -alpha off -compose Copy_Opacity -composite \
    -shave 10x -chop 0x10 output.png 
Run Code Online (Sandbox Code Playgroud)