1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 16:25:16 +03:00
opentx/radio/util/img2lbm.py
2013-12-02 07:13:57 +01:00

111 lines
3.5 KiB
Python

#!/usr/bin/env python
import sys
from PyQt4 import Qt, QtGui
image = QtGui.QImage(sys.argv[1])
width, height = image.size().width(), image.size().height()
f = open(sys.argv[2], "w")
if len(sys.argv) > 3:
what = sys.argv[3]
else:
for s in ("03x05", "04x06", "05x07", "08x10", "10x14"):
if s in sys.argv[2]:
what = s
break
if what == "largimg":
rows = 1
if len(sys.argv) > 4:
rows = int(sys.argv[4])
f.write("255,%d, %d,\n" % (width-255, height/rows))
for y in range(0, height, 8):
for x in range(width):
value = 0
for z in range(8):
if y+z < height and image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
elif what == "img":
rows = 1
if len(sys.argv) > 4:
rows = int(sys.argv[4])
f.write("%d,%d,\n" % (width, height/rows))
for y in range(0, height, 8):
for x in range(width):
value = 0
for z in range(8):
if y+z < height and image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
elif what == "bmp":
rows = 1
colors = []
if len(sys.argv) > 4:
rows = int(sys.argv[4])
f.write("%d,%d,\n" % (width, height/rows))
for y in range(0, height, 8):
for x in range(width):
values = [255, 255, 255, 255]
for z in range(8):
if y+z < height:
gray = Qt.qGray(image.pixel(x, y+z))
for i in range(4):
if (gray & (1<<(4+i))):
values[i] -= 1 << z
for value in values:
f.write("0x%02x," % value)
f.write("\n")
elif what == "03x05":
for y in range(0, height, 5):
for x in range(width):
value = 0
for z in range(5):
if image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
elif what == "04x06":
for y in range(0, height, 7):
for x in range(width):
value = 0
for z in range(7):
if image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
elif what == "05x07":
for y in range(0, height, 8):
for x in range(width):
value = 0
for z in range(8):
if image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
elif what == "08x10":
for y in range(0, height, 12):
for x in range(width):
for l in range(0, 12, 8):
value = 0
for z in range(8):
if l+z < 12 and image.pixel(x, y+l+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
elif what == "10x14":
for y in range(0, height, 16):
for x in range(width):
for l in range(0, 16, 8):
value = 0
for z in range(8):
if image.pixel(x, y+l+z) == Qt.qRgb(0, 0, 0):
value += 1 << z
f.write("0x%02x," % value)
f.write("\n")
else:
print("wrong argument", sys.argv[3])