Move the image loader to shared
This commit is contained in:
parent
72599b7d00
commit
d05e382063
@ -25,29 +25,22 @@ def main(font_name, n_glyphs, fname_png, fname_c):
|
|||||||
|
|
||||||
|
|
||||||
def load_glyphs(fname_png: str):
|
def load_glyphs(fname_png: str):
|
||||||
with Image.open(fname_png) as im:
|
width, height, data = shared.load_image(fname_png)
|
||||||
width = im.width
|
monochrome = [pixel_to_monochrome(p) for p in data]
|
||||||
height = im.height
|
|
||||||
|
|
||||||
assert width % 8 == 0, "width must be a multiple of 8"
|
glyphs = []
|
||||||
assert height % 8 == 0, "height must be a multiple of 8"
|
for gy in range(0, height, 8):
|
||||||
|
for gx in range(0, width, 8):
|
||||||
|
glyph = 0
|
||||||
|
for py in range(0, 8):
|
||||||
|
for px in range(0, 8):
|
||||||
|
x = gx + px
|
||||||
|
y = gy + py
|
||||||
|
if monochrome[y * width + x]:
|
||||||
|
glyph |= 1 << (py * 8 + px)
|
||||||
|
glyphs.append(glyph)
|
||||||
|
|
||||||
data = list(im.convert("RGBA").getdata())
|
return glyphs
|
||||||
monochrome = [pixel_to_monochrome(p) for p in data]
|
|
||||||
|
|
||||||
glyphs = []
|
|
||||||
for gy in range(0, height, 8):
|
|
||||||
for gx in range(0, width, 8):
|
|
||||||
glyph = 0
|
|
||||||
for py in range(0, 8):
|
|
||||||
for px in range(0, 8):
|
|
||||||
x = gx + px
|
|
||||||
y = gy + py
|
|
||||||
if monochrome[y * width + x]:
|
|
||||||
glyph |= 1 << (py * 8 + px)
|
|
||||||
glyphs.append(glyph)
|
|
||||||
|
|
||||||
return glyphs
|
|
||||||
|
|
||||||
|
|
||||||
def pixel_to_monochrome(rgba: Tuple[int, int, int, int]):
|
def pixel_to_monochrome(rgba: Tuple[int, int, int, int]):
|
||||||
|
@ -1,6 +1,17 @@
|
|||||||
|
from PIL import Image
|
||||||
from jinja2 import Environment, BaseLoader, select_autoescape
|
from jinja2 import Environment, BaseLoader, select_autoescape
|
||||||
|
|
||||||
templates = Environment(
|
templates = Environment(
|
||||||
loader=BaseLoader(),
|
loader=BaseLoader(),
|
||||||
autoescape=select_autoescape(),
|
autoescape=select_autoescape(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def load_image(fname):
|
||||||
|
with Image.open(fname) as im:
|
||||||
|
width = im.width
|
||||||
|
height = im.height
|
||||||
|
|
||||||
|
assert width % 8 == 0, "width must be a multiple of 8"
|
||||||
|
assert height % 8 == 0, "height must be a multiple of 8"
|
||||||
|
|
||||||
|
return width, height, list(im.convert("RGBA").getdata())
|
Loading…
Reference in New Issue
Block a user