Sync edgetx to Gitea
This commit is contained in:
Executable
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
from PIL import Image
|
||||
|
||||
|
||||
class FontEncoder:
|
||||
def __init__(self, filename):
|
||||
self.f = open(filename, "w")
|
||||
|
||||
def write(self, value):
|
||||
self.f.write("0x%02x," % value)
|
||||
#
|
||||
# def write_size(self, width, height):
|
||||
# self.f.write("%d,%d,\n" % (width, height))
|
||||
|
||||
def encode(self, image, step):
|
||||
image = image.convert(mode='L')
|
||||
width, height = image.size
|
||||
for y in range(0, height, step):
|
||||
for x in range(width):
|
||||
for l in range(0, step, 8):
|
||||
value = 0
|
||||
for z in range(min(8, step)):
|
||||
# print(y + l + z)
|
||||
if image.getpixel((x, y + l + z)) == 0:
|
||||
value += 1 << z
|
||||
if step < 8 and value == 0x7f:
|
||||
value = 0xff
|
||||
self.write(value)
|
||||
# self.f.write("\n")
|
||||
|
||||
def encode_special(self, image, step):
|
||||
image = image.convert(mode='L')
|
||||
width, height = image.size
|
||||
for y in range(0, height, step):
|
||||
for x in range(width):
|
||||
skip = True
|
||||
for l in range(0, step, 8):
|
||||
value = 0
|
||||
for z in range(min(8, step)):
|
||||
if l + z < 12:
|
||||
if image.getpixel((x, y + l + z)) == 0:
|
||||
value += 1 << z
|
||||
else:
|
||||
skip = False
|
||||
if skip and l == 8:
|
||||
value = 0xff
|
||||
self.write(value)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Fonts encoder')
|
||||
parser.add_argument('input', action="store", help="Input file name")
|
||||
parser.add_argument('output', action="store", help="Output file name")
|
||||
args = parser.parse_args()
|
||||
|
||||
image = Image.open(args.input)
|
||||
output = args.output
|
||||
|
||||
for s in ("03x05", "04x06", "05x07", "08x10", "10x14", "22x38"):
|
||||
if s in args.input:
|
||||
size = s
|
||||
break
|
||||
|
||||
encoder = FontEncoder(output)
|
||||
|
||||
if size == "03x05":
|
||||
encoder.encode(image, 5)
|
||||
elif size == "04x06":
|
||||
encoder.encode(image, 7)
|
||||
elif size == "05x07":
|
||||
encoder.encode(image, 8)
|
||||
elif size == "08x10":
|
||||
encoder.encode_special(image, 12)
|
||||
elif size == "10x14":
|
||||
encoder.encode(image, 16)
|
||||
elif size == "22x38":
|
||||
encoder.encode(image, 40)
|
||||
else:
|
||||
print("Unknown size", sys.argv[4])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user