DasLenny Posted June 12, 2020 Share Posted June 12, 2020 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 Quote brew install graphicsmagick on the command line to install it. I hope this is in the correct forum, tand that somebody might find this useful. Thanks, DasLenny v_kyr, Seneca, Butler To Cats and 1 other 4 Quote Link to comment Share on other sites More sharing options...
MikeW Posted June 12, 2020 Share Posted June 12, 2020 I am a big believer in automation. Thanks for sharing. Mike Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.