Для этого я написал два bash скрипта.
Первый уменьшает размеры фотографий, второй делает из миниатюр мозаику.
#!/bin/bash SW=150 SH=150 FROMDIR="fromdir" TODIR="todir" for name in $(ls $FROMDIR); do convert -resize ${SW}x${SW} -strip $FROMDIR/$name $TODIR/$name; done
Здесь
SW - ограничение ширины миниатюры; SH - ограничение высоты миниатюры; FROMDIR - каталог, в котором находятся фотографии; TODIR - каталог, в который будут сложены миниатюры.
Далее скрипт, который по миниатюрам создает мозаику:
#!/bin/bash SW=150 SH=112 COLS=15 REZFILE="mosaic-`date "+%Y-%m-%d_%H_%M_%S"`.jpg" FDIR="small" $(echo "convert $(i=0 && for name in $(ls $FDIR | sort -R); do echo -n " -page +$[($i%$COLS)*$SW]+$[(($i-$i%$COLS)/$COLS)*$SH] $FDIR/$name" && i=$[$i+1]; done) -mosaic $REZFILE")
Здесь
SW - ширина миниатюры; SH - высота миниатюры; COLS - количество столбцов; REZFILE - файл с мозаикой; FDIR - каталог миниатюрами.
Еще раз напомню, все миниатюры должны быть одинакового размера. Иначе будут пустоты.
Что бы мозаика повторяла пропорции исходных фотографий должно быть
SW==SH
Число фотографий должно равняться произведению
SW*SH
В последнем скрипте sort -R для случайного упорядочивания. Если его убрать, будет тот порядок, в котором выдает ls.Вот пример мозаики из аватарок пользователей сайта:
Комментариев нет:
Отправить комментарий