I have been trying for days to write a script that creates a simple proof sheet from a directory of images. The only scripts I found label the images, which I don't like. I wanted to annotate them as per Labeling on top of the Image itself....
I was unable to use annotate rather than label with montage and could find no examples online. That would be ideal. If someone knows how to implement that, I would prefer it.
What I did so far is to first resize and annotate the images into a separate directory and then create the proof sheet using montage. That works but has the disadvantage of making lossy copies of lossy copies and requiring writing files to a directory.
I tried to pipe the output of the convert for loop to montage but didn't succeed. That would be the second best solution. If anyone knows how to do that, that would be very helpful.
This works but…:
d="<path to image directory>"
dirname=`basename "$d"`
echo $dirname
parent=`dirname "$d"`
echo $parent
parentdir=`basename "$parent"`
echo $parentdir
cd "$d"
if [ -f "$parentdir-$dirname proof sheet.jpg" ]
then
rm "$parentdir-$dirname proof sheet.jpg"
fi
tilenum=5
spacing=1
scrw=$((1920-(tilenum*spacing+spacing)))
imgw=$(($scrw/$tilenum))
echo $imgw
if [ ! -d rszannot ]
then
mkdir rszannot
else
rm rszannot/*
fi
shopt -s nullglob # prevents errors for extensions not found
shopt -s nocaseglob # case insensitive args
for f in "${arg}"*.{jpg,jpeg,png,gif}
do
fn=$(basename "${f%.*}")
convert -verbose "$f" \
-define jpeg:size=${imgw}x \
-quality 100 \
-resize ${imgw}x \
-gravity south \
-pointsize 20 \
-stroke '#000C' -strokewidth 2 -annotate 0 '%f' \
-stroke none -fill white -annotate 0 '%f' \
"rszannot/$fn-${imgw}x.jpg"
done
cd rszannot
montage -verbose \
-quality 100 \
-background black \
-geometry +${spacing}+${spacing} \
-tile ${tilenum}x \
*.jpg \
"../$parentdir-$dirname proof sheet.jpg"
open "../$parentdir-$dirname proof sheet.jpg"
shopt -u nocaseglob
shopt -u nullglob

You can resize and annotate all your images in a sub shell and save to miff:, then pipe that to montage in Unix Imagemagick. Here is an example: