From 6ec782609c226f867d6eb22bb3cfb48cfa388bcf Mon Sep 17 00:00:00 2001 From: localhorst Date: Sun, 22 Jun 2025 12:54:48 +0200 Subject: [PATCH] shrink more --- layouter.py | 21 ++++++++++----------- output.png | Bin 5129 -> 4554 bytes 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/layouter.py b/layouter.py index deebd6e..a746ea0 100644 --- a/layouter.py +++ b/layouter.py @@ -21,15 +21,14 @@ FONT_PATH = "/usr/share/fonts" DEFAULT_FONT_REGULAR = "DejaVuSans.ttf" DEFAULT_FONT_BOLD = "DejaVuSans-Bold.ttf" OUTPUT_WIDTH = 696 # px -OUTPUT_HEIGHT = 212 # px -TEXT_X_OFFSET = 212 # px -QR_CODE_SIZE = 200 # px +OUTPUT_HEIGHT = 190 # px +TEXT_X_OFFSET = 190 # px +QR_CODE_SIZE = 179 # px # Configure logging logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" ) - @dataclasses.dataclass class DriveData: drive_index: int @@ -143,9 +142,9 @@ def draw_text(drawable, printable_data, font_regular, font_bold, font_bold_bigge label_x = TEXT_X_OFFSET value_offset = 115 right_field_spacing = 200 # Horizontal gap between Cycles and Errors - x_capacity = 480 - y_capacity = 161 - y_start = 10 + x_capacity = 510 + y_capacity = 142 + y_start = 4 # Serial Number drawable.text((label_x, y_start), "Serial:", fill=0, font=font_bold) @@ -298,11 +297,11 @@ def generate_image(drive, rehdd_info, output_file): output_image = Image.new("1", (OUTPUT_WIDTH, OUTPUT_HEIGHT), "white") draw = ImageDraw.Draw(output_image) - font_regular = ImageFont.truetype(find_font_path(DEFAULT_FONT_REGULAR), 20) - font_bold = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 20) - font_bold_bigger = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 45) + font_regular = ImageFont.truetype(find_font_path(DEFAULT_FONT_REGULAR), 18) + font_bold = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 18) + font_bold_bigger = ImageFont.truetype(find_font_path(DEFAULT_FONT_BOLD), 42) - draw_outline(draw, 1, 4, OUTPUT_WIDTH, OUTPUT_HEIGHT) + draw_outline(draw, 0, 3, OUTPUT_WIDTH+1, OUTPUT_HEIGHT+1) draw_text(draw, printable_data, font_regular, font_bold, font_bold_bigger) draw_qr_code(output_image, qr_data) diff --git a/output.png b/output.png index 77808a0080a7ef7dfbac07cb5840118567be8109..e205a0c342bf0777cafd3bec63e0c5028e3a2916 100644 GIT binary patch literal 4554 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 literal 5129 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 r|2rer1h#Ii_$n*