我想制作一个包装图像或gif,当用不同的图像合成时,它会像包装图像一样包裹它。
例如组合这两个图像:
会产生此图像
我不想要一个imagemagick命令来执行这种特定的像素移动,因为它不会是模块化的。
答案 0 :(得分:1)
这是Imagemagick中使用-roll函数的一种方法。但遗憾的是它并没有使用百分比。所以我必须在IM 6中进行单独的计算以将百分比转换为像素。在IM 7中,除了设置pct重叠和分割之外,它可以在一个命令中完成。
在这里,我将图像分成3个部分(每个部分为33%,但可以使用不同的数量)。然后将中间部分向右滚动33%。
IM 6
pct=33
rollx=`convert palmtree.png -format "%[fx:round($pct*w/100)]" info:`
convert palmtree.png \( -clone 0 -gravity north -crop 100%x$pct%+0+0 +repage \) \( -clone 0 -gravity center -crop 100%x$pct%+0+0 +repage -roll +${rollx}+0 \) \( -clone 0 -gravity south -crop 100%x$pct%+0+0 +repage \) -delete 0 -append result.png
IM 7
pct=33
magick palmtree.png -set option:rollx "%[fx:round($pct*w/100)]" \( -clone 0 -gravity north -crop 100%x$pct%+0+0 +repage \) \( -clone 0 -gravity center -crop 100%x$pct%+0+0 +repage -roll +[rollx]+0 \) \( -clone 0 -gravity south -crop 100%x$pct%+0+0 +repage \) -delete 0 -append result.png
如果您不想要33%,那么根据需要将pct更改为每个零件和滚动所需的百分比。如果要使用多个图像,请将每个-clone替换为所需的实际图像。