You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
939 B
38 lines
939 B
#!/usr/bin/env python3 |
|
# pip install pillow to get the PIL module |
|
|
|
import sys |
|
from PIL import Image |
|
|
|
def main(fn, id): |
|
image = Image.open(fn) |
|
print("\n" |
|
"#define {id}_width {w}\n" |
|
"#define {id}_height {h}\n" |
|
"\n" |
|
"const uint8_t PROGMEM {id}_data[] = {{\n" |
|
.format(id=id, w=image.width, h=image.height), end='') |
|
for y in range(0, image.height): |
|
for x in range(0, (image.width + 7)//8 * 8): |
|
if x == 0: |
|
print(" ", end='') |
|
if x % 8 == 0: |
|
print("0b", end='') |
|
|
|
bit = '0' |
|
if x < image.width and image.getpixel((x,y)) != 0: |
|
bit = '1' |
|
print(bit, end='') |
|
|
|
if x % 8 == 7: |
|
print(",", end='') |
|
print() |
|
print("};") |
|
|
|
if __name__ == '__main__': |
|
if len(sys.argv) < 3: |
|
print("Usage: {} <imagefile> <id>\n".format(sys.argv[0]), file=sys.stderr); |
|
sys.exit(1) |
|
fn = sys.argv[1] |
|
id = sys.argv[2] |
|
main(fn, id)
|
|
|