Используя ImageMagick 6 или 7, если у вас достаточно памяти для одновременного считывания всех ваших изображений, вы можете изменить их размер, произвольно повернуть их и поместить все в случайных местах на холст 1000x1000 с помощью команды, подобной этой ...
convert granite: -duplicate 11 -resize 250x \
-background none -gravity center -extent 1000x1000 \
-distort SRT "%[fx:rand()*45-22.5]" -virtual-pixel tile \
-distort affine "%[fx:w/2],%[fx:h/2] %[fx:rand()*w],%[fx:rand()*h]" \
-flatten result.png
При этом используется встроенное изображение ImageMagick «granite:», дублированное еще 11 раз. Замените «granite: -duplicate 11» списком ваших входных файлов.
Он начинается с изменения их размера до ширины 250 пикселей, а затем размещения каждого из них в центре прозрачного холста 1000x1000.
Настоящая работа выполняется в операциях искажения. Первый «-истор СТО» поворачивает каждое изображение на произвольную величину от -22,5 до +22,5 градуса. Затем «-distort affine» перемещает каждое изображение в случайное место на холсте. Любая часть изображения, выходящая за пределы холста, будет откатываться на противоположную сторону. Это делает результат пригодным для мозаичного изображения.
Эта команда выравнивает все на прозрачном фоне, где бы оно ни отображалось между изображениями. Добавьте «-background blue» непосредственно перед операцией «-flatten», чтобы изменить цвет фона, например, на синий.
Это работает на моем IM 6 в bash. Для IM 6 в Windows измените обратную косую черту продолжения строки "\" на "^". Для IM версии 7 измените «конвертировать» на «магию».