Hi,
I needed to create arrays of images to show a distribution. Say you wanted to display the amount of male to female workers, or, like in my case the number of nominations in relation to the numbers of wins.
So, I wrote a simple python script to do it. It's using graphicsmagick (http://www.graphicsmagick.org/) for the actual image stuff.
It works like size: You give it a number of images, and specify how many of these images you want. By default it will arrange those images in a square grid, but you can also specify the number of columns you want to produce different layouts. You can specify the size of a cell and the border around it.
It will create a single output file using this data, which you can then use in your Affinity tools.
Right now it displays the images in order, but I could change it to display them randomly if needed.
#!/usr/local/bin/python3
import math
import os
# the number per image type
counts = [94,199]
# the actual filenames to use
images = ["A.png", "B.png"]
# what should be produced
outFilename = "out.png"
# size of the cells
cellWidth = 100
cellHeight = 100
# number of columns. If set to zero, it will create
# a layout with the same number of rows and columns.
columns = 0
# ----------------------------------
# Implementation
#
# Basically, it creates list of files for
# graphicsmagick's (http://www.graphicsmagick.org/montage.html)
# montage tool.
#
# On a mac you can use
# brew install graphicsmagick
# in a terminal to install graphicsmagick if you don't have it already
#
total = 0
for count in counts:
total += count
if ( columns == 0 ):
columns = math.ceil( math.sqrt( total ) )
rows = math.ceil( total / columns )
totalRemaining = total
curType = 0
typeRemaining = counts[curType]
params = ""
while totalRemaining > 0:
params += images[curType] + " "
totalRemaining = totalRemaining - 1
typeRemaining = typeRemaining - 1
if typeRemaining == 0:
# switch to next image
curType = curType + 1
typeRemaining = counts[ min(curType, len(images)-1 )]
# call graphicsmagick to do the hard work for us:
os.system( f'gm montage -background none -geometry {cellWidth}x{cellHeight}+10+10 -tile {columns}x{rows} {params} {outFilename}')
Maybe it's something you can find use for.
If you're on a mac, you can use
on the command line to install it.
I hope this is in the correct forum, tand that somebody might find this useful.
Thanks,
DasLenny