Skip to content

Instantly share code, notes, and snippets.

@michalrud
Created September 17, 2016 13:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michalrud/05359666fb7abdf059757f79e7b286d2 to your computer and use it in GitHub Desktop.
Save michalrud/05359666fb7abdf059757f79e7b286d2 to your computer and use it in GitHub Desktop.
from __future__ import print_function
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import csv
# 1 2 3
# 4 5 6
# 7 8 9
TEXT_COLOR = (255,255,255)
FONT_SIZE = 120
SHADOW_COLOR = (0, 0, 0)
SHADOW_SIZE = 4
YOFFSET = 20
XOFFSET = 20
mainFont = ImageFont.truetype("Lato-Medium.ttf", FONT_SIZE)
def getX(im, desc, pos):
x = 0
if (pos==1 or pos==4 or pos==7):
x = XOFFSET
if (pos==2 or pos==5 or pos==8):
x = (im.size[0]/2)-(mainFont.getsize(desc)[0]/2)
if (pos==3 or pos==6 or pos==9):
x = im.size[0]-mainFont.getsize(desc)[0]-XOFFSET
return x
def getY(im, desc, pos):
y = 0
if (1 <= pos <= 3):
y = YOFFSET
if (4 <= pos <= 6):
y = (im.size[1]/2)-(mainFont.getsize(desc)[1]/2)
if (7 <= pos <= 9):
y = im.size[1]-mainFont.getsize(desc)[1]-YOFFSET
return y
def addDescription(filename, desc, pos):
im = Image.open(filename)
draw = ImageDraw.Draw(im)
x = getX(im, desc, pos)
y = getY(im, desc, pos)
draw.text((x-SHADOW_SIZE,y-SHADOW_SIZE), desc, SHADOW_COLOR, font=mainFont)
draw.text((x+SHADOW_SIZE,y-SHADOW_SIZE), desc, SHADOW_COLOR, font=mainFont)
draw.text((x-SHADOW_SIZE,y+SHADOW_SIZE), desc, SHADOW_COLOR, font=mainFont)
draw.text((x+SHADOW_SIZE,y+SHADOW_SIZE), desc, SHADOW_COLOR, font=mainFont)
draw.text((x,y), desc, TEXT_COLOR, font=mainFont)
im.save("described/"+filename, "JPEG")
with open("descriptions.csv") as csvfile:
r = csv.reader(csvfile)
for row in r:
print(row)
addDescription(row[0], row[1], int(row[2]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment