Here is my problem. I have pictures of 300 people in JPG format that are numbered 1 to 300. In excel, I have 300 names in the same order. Now I must make a poster of 10 columns and 30 rows with each face and their name underneath. I have been Googling for 300 minutes and I am beginning to fear I have to paste every photo and name manually to a powerpoint slide...
You can download ImageMagick for free from imagemagick.org. Then you can do this:
First, from excel, export your list of names into a "names.txt" file, one name per line.
Second, "label" each n.jpg with the n'th line in names.txt, using "sed" to extract the n'th line, creating a file called n.png:
for x in *.jpg do n=`echo $x | sed -e s/.jpg//` magick $x -set label `sed -n -e "$n p" names.txt` $n.png done
Finally, make your montage from the resulting n.png files:
magick montage -tile 10x30 -label %l *.png montage.png
Well, without knowing what software tool you want to use, it's a bit difficult to provide an exact answer. Here is the pseudocode way I'd do it. Matlab, for one, could assemble the image, tho' it's hardly the best or fastest tool.
Let's pretend you've loaded the 300 names into an array of character strings, and have initialized a graphics frame. Then,
for j = 1:15 for k = 1:20 place_image(image[k + (k-1)*j]) AT location(x=j, y = k) write(name_array[k + (k-1)*j]) AT title_location(x=j, y = k) end end
Here, you'd have preset the location increment from
(j,k+1) as one image size, and preset
title_location with respect to the current image area.
Adobe InDesign would be best for this. Create a canvass and then using a Frame Tool (F) draw out a frame to the margins of the canvass (or the edges)- whilst still holding a mouse use arrow keys on keyboard to divide big frame into many cells. Then click on each cell and press Cntrl+D or Cmd+D to place images one by one. Press cmd+alt+shift+C to proportionally center each image inside the frame. Shouldn't take too long!