encode.py 917 B

12345678910111213141516171819202122232425262728
  1. import sys
  2. import Image
  3. from array import array
  4. def getch(im, x, y):
  5. return tuple(tuple((int(0 != im.getpixel((x + j, y + i)))) for j in range(8)) for i in range(8))
  6. def main(filename):
  7. sm = Image.open(filename).convert("L")
  8. im = Image.new("L", (512, 256))
  9. im.paste(sm, (0,0))
  10. charset = {}
  11. picture = []
  12. for y in range(0, im.size[1], 8):
  13. for x in range(0, im.size[0], 8):
  14. glyph = getch(im, x, y)
  15. if not glyph in charset:
  16. charset[glyph] = 96 + len(charset)
  17. picture.append(charset[glyph])
  18. open(filename + ".pic", "w").write(array('B', picture).tostring())
  19. cd = array('B', [0] * 8 * len(charset))
  20. for d,i in charset.items():
  21. i -= 96
  22. for y in range(8):
  23. cd[8 * i + y] = sum([(d[y][x] << (7 - x)) for x in range(8)])
  24. open(filename + ".chr", "w").write(cd.tostring())
  25. main(sys.argv[1])