Skip to content

Instantly share code, notes, and snippets.

@clemesha
Created May 23, 2009 16:33
Show Gist options
  • Save clemesha/116678 to your computer and use it in GitHub Desktop.
Save clemesha/116678 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import ImageDraw, Image, ImageFont
def flash_card_name(n, sname):
names = []
for i in range(n):
if i < 10:
names.append("%s00%d.png" % (sname, i))
elif i < 100:
names.append("%s0%d.png" % (sname, i))
else:
names.append("%s%d.png" % (sname, i))
return names
def flash_card_image(name, text, imgsize=(425, 290)):
img = Image.new("RGB", imgsize, "white")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", 20)
if isinstance(text, str):
draw.text((20, 10), text, font=font, fill="black")
else:
h = 10
for t in text:
draw.text((20, h), t, font=font, fill="black")
h += 25
img.save(name, "PNG")
del img, draw
def flash_card_text(fname):
fs = open(fname).read()
fl = fs.split("\r\n")
alltext = []
for l in fl:
qa = l.split("\t")
if len(qa) == 2:
alltext.append(qa[0])
alltext.append(qa[1])
return alltext
def multiline(text, wpl=3):
tl = text.split(" ")
temp = []
res = []
cnt = 0
maxlen = len(tl)
for i,w in enumerate(tl):
if cnt == wpl:
temp.append(w)
res.append(" ".join(temp))
temp = []
cnt = 0
else:
cnt += 1
temp.append(w)
if i == maxlen-1:
res.append(" ".join(temp))
return res
if __name__ == "__main__":
import sys
print sys.argv
fname = sys.argv[1]
imgname = fname.split(".")[0]
print fname, imgname
alltext = flash_card_text(fname)
names = flash_card_name(len(alltext), imgname)
for i in range(len(alltext)):
name = names[i]
text = multiline(alltext[i])
print name, text
flash_card_image(name, text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment