bash -lc python - <<'PY'
from PIL import Image, ImageDraw
import os, math
folder='/mnt/data/rendered2'
files=sorted([f for f in os.listdir(folder) if f.endswith('.png')], key=lambda x:int(x.split('-')[1].split('.')[0]))
ims=[Image.open(os.path.join(folder,f)).convert('RGB') for f in files]
thumbs=[]
for i,im in enumerate(ims,1):
th=im.copy(); th.thumbnail((220,300))
canvas=Image.new('RGB',(230,320),'white'); canvas.paste(th,((230-th.width)//2,10))
ImageDraw.Draw(canvas).text((10,295),f'p.{i}',fill='black')
thumbs.append(canvas)
cols=2; rows=math.ceil(len(thumbs)/cols)
out=Image.new('RGB',(cols230, rows320),(240,240,240))
for idx,th in enumerate(thumbs): out.paste(th,((idx%cols)*230,(idx//cols)*320))
out.save('/mnt/data/rendered2/contact.png')
print('/mnt/data/rendered2/contact.png')
PY
Thought for 7m 31s