Image processing Imagemagick:合成两个图像,其中一个包裹另一个

Image processing Imagemagick:合成两个图像,其中一个包裹另一个,image-processing,imagemagick,Image Processing,Imagemagick,我想制作一个包装图像或gif,当用不同的图像合成时,它会像包装图像一样包装它 例如,组合这两个图像: 会产生这样的图像 我不希望imagemagick命令执行这种特定的像素移动,因为这样它就不是模块化的。这里是imagemagick中使用-roll函数的一种方法。但不幸的是,它没有使用百分比。所以我必须在IM6中进行单独的计算,将百分比转换为像素。在IM7中,除了设置pct重叠和分割外,还可以在一个命令中完成 在这里,我将图像分为3个部分(每个部分占33%,尽管可以使用不同的数量)。然后将

我想制作一个包装图像或gif,当用不同的图像合成时,它会像包装图像一样包装它

例如,组合这两个图像:

会产生这样的图像


我不希望imagemagick命令执行这种特定的像素移动,因为这样它就不是模块化的。

这里是imagemagick中使用-roll函数的一种方法。但不幸的是,它没有使用百分比。所以我必须在IM6中进行单独的计算,将百分比转换为像素。在IM7中,除了设置pct重叠和分割外,还可以在一个命令中完成

在这里,我将图像分为3个部分(每个部分占33%,尽管可以使用不同的数量)。然后将中间部分向右卷绕33%

我6岁

我7岁


如果您不希望全部为33%,则根据需要将每个零件和辊的pct更改为您想要的任何百分比。如果要使用多个图像,请将每个克隆替换为所需的实际图像。

我不理解您的评论“我不希望使用imagemagick命令来执行这种特定的像素移动,因为这样它就不是模块化的。”你想如何控制重叠的数量和重叠的数量?我发布的第二张渐变图像将控制重叠,但我开始意识到这基本上是不可能的(除非我想玩神经网络或其他疯狂的东西)。你的回答仍然很有用,所以谢谢你。
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
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