1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/tools/bitmap.py Sun May 19 21:18:16 2013 +0000
1.3 @@ -0,0 +1,84 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +import PIL.Image
1.7 +import sys
1.8 +
1.9 +def get_image(input_filename, width, height):
1.10 +
1.11 + i = PIL.Image.open(input_filename)
1.12 + if i.size != (width, height):
1.13 + i.thumbnail((width, height), PIL.Image.ANTIALIAS)
1.14 +
1.15 + # Convert to monochrome.
1.16 +
1.17 + i = i.convert("1")
1.18 +
1.19 + all_values = []
1.20 + values = []
1.21 + last = None
1.22 + x = 0
1.23 + byte = 0
1.24 +
1.25 + for value in i.getdata():
1.26 +
1.27 + byte = (byte << 1) + (value == 255 and 1 or 0)
1.28 + x += 1
1.29 +
1.30 + if x % 8 == 0:
1.31 + values.append(byte)
1.32 + byte = 0
1.33 +
1.34 + if x == width:
1.35 + x = 0
1.36 + byte = 0
1.37 + all_values.append(values)
1.38 + values = []
1.39 +
1.40 + return all_values
1.41 +
1.42 +if __name__ == "__main__":
1.43 + import sys, os
1.44 +
1.45 + if len(sys.argv) < 3:
1.46 + print sys.argv[0], "<output basename> <image filename>..."
1.47 + sys.exit(1)
1.48 +
1.49 + output_basename = sys.argv[1]
1.50 + input_filenames = sys.argv[2:]
1.51 + width = 264
1.52 + height = 176
1.53 + number_of_images = len(input_filenames)
1.54 +
1.55 + f = open("%s.c" % output_basename, "wb")
1.56 +
1.57 + try:
1.58 + # Write the image data.
1.59 +
1.60 + f.write("#include <stdint.h>\n")
1.61 + f.write("const uint8_t image_data[%d][%d][%d] = {\n" % (number_of_images, height, width / 8))
1.62 + for input_filename in input_filenames:
1.63 + f.write("{\n")
1.64 + data = get_image(input_filename, width, height)
1.65 + for y in range(0, height):
1.66 + values = data[y]
1.67 + f.write("{\n")
1.68 + f.write(", ".join([("0x%02x" % v) for v in values]))
1.69 + f.write("},\n")
1.70 + f.write("},\n")
1.71 + f.write("};\n")
1.72 +
1.73 + finally:
1.74 + f.close()
1.75 +
1.76 + f = open("%s.h" % output_basename, "wb")
1.77 +
1.78 + try:
1.79 + f.write("#include <stdint.h>\n")
1.80 + f.write("extern const uint8_t image_data[%d][%d][%d];\n" % (number_of_images, height, width / 8))
1.81 + f.write("#define MAX_IMAGE %d\n" % (number_of_images - 1))
1.82 + f.write("#define NUMBER_OF_IMAGES %d\n" % number_of_images)
1.83 +
1.84 + finally:
1.85 + f.close()
1.86 +
1.87 +# vim: tabstop=4 expandtab shiftwidth=4