Imagemagick:组成2张图片,其中1张包裹另一张图片

时间:2017-07-13 15:55:06

标签: image-processing imagemagick

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

例如组合这两个图像:

enter image description here

enter image description here

会产生此图像

enter image description here

我不想要一个imagemagick命令来执行这种特定的像素移动,因为它不会是模块化的。

1 个答案:

答案 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

enter image description here

如果您不想要33%,那么根据需要将pct更改为每个零件和滚动所需的百分比。如果要使用多个图像,请将每个-clone替换为所需的实际图像。