Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import string
- import os
- import math
- from PIL import Image
- from PIL import ImageDraw
- from PIL import ImageFont
- path = r"D:\Arсane Art"
- save_path = r"D:\alph"
- res = 512
- d = {}
- # find most rectangular images
- for file in os.listdir(path):
- img_path = os.path.join(path, file)
- img = Image.open(img_path)
- ratio = abs(math.log(img.size[0] / img.size[1]))
- d.update({img_path: ratio})
- d = dict(sorted(d.items(), key=lambda item: item[1]))
- alphabet = string.ascii_uppercase.replace('J', '')
- n = len(alphabet)
- imgs = list(d.keys())[:n]
- imgs2 = []
- font_size = int(res / 4)
- font = ImageFont.truetype("C:\WINDOWS\Fonts\IMPACT.TTF", font_size)
- pos = [font_size*0.4]*2
- stroke_width = int(font_size/8)
- # slap letters to them
- for i in range(n):
- letter = alphabet[i]
- img = Image.open(imgs[i]).resize([res]*2)
- draw = ImageDraw.Draw(img)
- draw.text(pos, letter, font=font, fill=(255,255,255), stroke_width=stroke_width, stroke_fill=(0,0,0))
- imgs2.append(img)
- img.save(os.path.join(save_path, letter+'.jpg'))
- # combine them
- n = 5
- size = res * n
- big_im = Image.new('RGB', [size]*2)
- i=0
- x_offset = 0
- y_offset = 0
- for im in imgs2:
- if i > 0 and i%n == 0:
- x_offset = 0
- y_offset+=res
- big_im.paste(im, (x_offset,y_offset))
- x_offset += res
- i+=1
- big_im.save(os.path.join(save_path, "5x5.jpg"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement