diff --git a/fichero/cli.py b/fichero/cli.py index 63bfe11..f7e0302 100644 --- a/fichero/cli.py +++ b/fichero/cli.py @@ -157,17 +157,17 @@ def main() -> None: p_text = sub.add_parser("text", help="Print text label") p_text.add_argument("text", nargs="+", help="Text to print") - p_text.add_argument("--density", type=int, default=1, choices=[0, 1, 2], + p_text.add_argument("--density", type=int, default=2, choices=[0, 1, 2], help="Print density: 0=light, 1=medium, 2=thick") p_text.add_argument("--copies", type=int, default=1, help="Number of copies") - p_text.add_argument("--font-size", type=int, default=24, help="Font size in points") + p_text.add_argument("--font-size", type=int, default=30, help="Font size in points") p_text.add_argument("--label-height", type=int, default=240, help="Label height in pixels (default: 240)") p_text.set_defaults(func=cmd_text) p_image = sub.add_parser("image", help="Print image file") p_image.add_argument("path", help="Path to image file") - p_image.add_argument("--density", type=int, default=1, choices=[0, 1, 2], + p_image.add_argument("--density", type=int, default=2, choices=[0, 1, 2], help="Print density: 0=light, 1=medium, 2=thick") p_image.add_argument("--copies", type=int, default=1, help="Number of copies") p_image.set_defaults(func=cmd_image) diff --git a/fichero/imaging.py b/fichero/imaging.py index dc271a5..6f2662d 100644 --- a/fichero/imaging.py +++ b/fichero/imaging.py @@ -2,7 +2,7 @@ import logging -from PIL import Image, ImageDraw, ImageFont +from PIL import Image, ImageDraw, ImageFont, ImageOps from fichero.printer import PRINTHEAD_PX @@ -18,6 +18,7 @@ def prepare_image(img: Image.Image, max_rows: int = 240) -> Image.Image: log.warning("Image height %dpx exceeds max %dpx, cropping bottom", new_h, max_rows) new_h = max_rows img = img.resize((PRINTHEAD_PX, new_h), Image.LANCZOS) + img = ImageOps.autocontrast(img, cutoff=1) img = img.point(lambda x: 1 if x < 128 else 0, "1") return img @@ -31,12 +32,13 @@ def image_to_raster(img: Image.Image) -> bytes: return img.tobytes() -def text_to_image(text: str, font_size: int = 24, label_height: int = 240) -> Image.Image: - """Render text in landscape, then rotate 90 degrees for label printing.""" +def text_to_image(text: str, font_size: int = 30, label_height: int = 240) -> Image.Image: + """Render crisp 1-bit text, rotated 90 degrees for label printing.""" canvas_w = label_height canvas_h = PRINTHEAD_PX img = Image.new("L", (canvas_w, canvas_h), 255) draw = ImageDraw.Draw(img) + draw.fontmode = "1" # disable antialiasing - pure 1-bit glyph rendering font = ImageFont.load_default(size=font_size) diff --git a/web/index.html b/web/index.html index de6b17d..9614b6e 100644 --- a/web/index.html +++ b/web/index.html @@ -287,8 +287,8 @@