Just head to your local slave market - make sure to wear a mask, it's important to be socially responsible during a pandemic!
The code was written in python, making use of the scikit-image module (which has many features, though I only used it for reading/saving image files to/from arrays).
I had to download the 20 image files from the wiki, which were helpfully all the exact same size (200x200). Then I just stiched together new files by copying an image, and overwriting half/a third of it with another image.
Code
import numpy
import math
import os
import skimage
import skimage.io
existingCombos = []
for f1 in os.listdir(r'Single Magics'):
filename1 = os.fsdecode(f1)
array1 = skimage.io.imread(r"Single Magics/" + filename1)
for f2 in os.listdir(r'Single Magics'):
if f1 == f2:
continue
filename2 = os.fsdecode(f2)
if (filename2, filename1) in existingCombos:
continue
existingCombos.append((filename1, filename2))
array2 = skimage.io.imread(r"Single Magics/" + filename2)
newArray = numpy.array(array1)
xLimit = array1.shape[1]/2
for i in range(array1.shape[0]):
for j in range(array1.shape[1]):
if j > xLimit:
newArray[i][j] = array2[i][j]
skimage.io.imsave(r"Double Magics/" + filename1[:-10] + " and " + filename2[:-10] + " Magic.png", newArray)
existingCombos = []
for f1 in os.listdir(r'Single Magics'):
filename1 = os.fsdecode(f1)
array1 = skimage.io.imread(r"Single Magics/" + filename1)
for f2 in os.listdir(r'Single Magics'):
if f1 == f2:
continue
filename2 = os.fsdecode(f2)
existingCombos.append((filename1, filename2))
array2 = skimage.io.imread(r"Single Magics/" + filename2)
for f3 in os.listdir(r'Single Magics'):
if f1 == f3 or f2 == f3:
continue
filename3 = os.fsdecode(f3)
if set([filename1, filename2, filename3]) in existingCombos:
continue
existingCombos.append(set([filename1, filename2, filename3]))
array3 = skimage.io.imread(r"Single Magics/" + filename3)
newArray = numpy.array(array1)
xHalf = array1.shape[1]/2
yHalf = array1.shape[0]/2
for i in range(array1.shape[0]):
for j in range(array1.shape[1]):
if (j > xHalf and i < yHalf
or j >= i and i >= yHalf):
newArray[i][j] = array2[i][j]
elif j >= xHalf-(i-yHalf) and i >= yHalf:
newArray[i][j] = array3[i][j]
skimage.io.imsave(r"Triple Magics/" + filename1[:-10] + " and " + filename2[:-10] + " and " + filename3[:-10] + " Magic.png", newArray)