如果您的 PNG 图片都是相同的尺寸,并且图片的数量可以平均划分为一个网格,例如 72 张图片将组成一个 8 x 9 的图片网格,并且如果您的图片足够小,可以阅读它们全部整合到一个 ImageMagick 命令中,这里有一个命令将随机化一组 72 个输入图像的顺序...
convert *.png -virtual-pixel tile +append -crop 9x1@ -append +repage ^
-crop 1x9@ -distort affine "0,0 %[fx:floor(rand()*8)*(w/8)],0" -append +repage ^
-crop 8x1@ -distort affine "0,0 0,%[fx:floor(rand()*9)*(h/9)]" +append +repage ^
-crop 8x9@ +repage -set delay 10 -loop 0 image.gif
它基本上是一个网格,随机滚动所有行,然后随机滚动所有列。 shuffle 可以很好地分散图像,但是如果您想要更深的 shuffle,请复制并粘贴这两个“-crop ... -distort”行,并将它们添加到前两个下方...
convert *.png -virtual-pixel tile +append -crop 9x1@ -append +repage ^
-crop 1x9@ -distort affine "0,0 %[fx:floor(rand()*8)*(w/8)],0" -append +repage ^
-crop 8x1@ -distort affine "0,0 0,%[fx:floor(rand()*9)*(h/9)]" +append +repage ^
-crop 1x9@ -distort affine "0,0 %[fx:floor(rand()*8)*(w/8)],0" -append +repage ^
-crop 8x1@ -distort affine "0,0 0,%[fx:floor(rand()*9)*(h/9)]" +append +repage ^
-crop 8x9@ +repage -set delay 10 -loop 0 image.gif
小心地将“8”和“9”替换为包含您正在使用的图像数量的网格的宽度和高度。我在一个脚本中使用它来洗牌一副扑克牌图像,13 行 4 列。
这在 Windows CMD 语法中使用 ImageMagick v6。在 BAT 脚本中,将所有百分号“%%”加倍。通过将所有续行插入符号“^”更改为反斜杠“\”,它可能会在 *nix 操作系统上工作。对于 ImageMagick v7,使用“magick”而不是“convert”。