From 697dffe2deb8520e683c129b1ecdda1239b9bbef Mon Sep 17 00:00:00 2001 From: ThomasToka <117008525+ThomasToka@users.noreply.github.com> Date: Sat, 27 Jan 2024 19:53:23 +0100 Subject: [PATCH] Delete E3S1PROFORKBYTT_prusa_v27_thumbnail.py --- E3S1PROFORKBYTT_prusa_v27_thumbnail.py | 85 -------------------------- 1 file changed, 85 deletions(-) delete mode 100644 E3S1PROFORKBYTT_prusa_v27_thumbnail.py diff --git a/E3S1PROFORKBYTT_prusa_v27_thumbnail.py b/E3S1PROFORKBYTT_prusa_v27_thumbnail.py deleted file mode 100644 index 8617461..0000000 --- a/E3S1PROFORKBYTT_prusa_v27_thumbnail.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python3 -# -# Prusa Slicer as of v2.7 remove headers before jpg and convert PNG to JPG. -# -# This script has been developed for E3S1PROFORKBYTT by Thomas Toka. -# -# ------------------------------------------------------------------------------ - -import sys -import base64 -from PIL import Image -from io import BytesIO - -def main(source_file): - # Read the ENTIRE g-code file into memory - with open(source_file, "r") as f: - lines = f.readlines() - - # Find the index of the line containing '; HEADER_BLOCK_START' and '; HEADER_BLOCK_END' - header_start = next((i for i, line in enumerate(lines) if line.strip() == '; HEADER_BLOCK_START'), None) - header_end = next((i for i, line in enumerate(lines) if line.strip() == '; HEADER_BLOCK_END'), None) - - # Remove the header block if both start and end are found - if header_start is not None and header_end is not None: - del lines[header_start:header_end + 1] - - # Find and remove the '; THUMBNAIL_BLOCK_START' line - thumbnail_block_start_index = next((i for i, line in enumerate(lines) if line.strip() == '; THUMBNAIL_BLOCK_START'), None) - if thumbnail_block_start_index is not None: - del lines[thumbnail_block_start_index] - - # Convert the thumbnail from PNG to JPEG - thumbnail_start = next((i for i, line in enumerate(lines) if '; thumbnail begin' in line), None) - - if thumbnail_start is not None: - thumbnail_end = next((i for i, line in enumerate(lines[thumbnail_start:], start=thumbnail_start) if '; thumbnail end' in line), None) - - if thumbnail_end is not None: - # Extract and decode the PNG data - original_png_data = "".join(lines[thumbnail_start + 1:thumbnail_end]).replace("; ", "") - png_data_bytes = base64.b64decode(original_png_data) - image = Image.open(BytesIO(png_data_bytes)) - image = image.convert("RGB") - - # Encode the image as JPEG - buffer = BytesIO() - image.save(buffer, format="JPEG") - image_jpg_data = buffer.getvalue() - - # Base64 encode the JPEG data - image_jpg_base64 = base64.b64encode(image_jpg_data).decode('utf-8') - - # Replace the size in the '; thumbnail begin' line with the new JPEG size - lines[thumbnail_start] = f'; thumbnail_JPG begin 250x250 {len(image_jpg_data)}\n' - - # Split the base64 string into formatted lines - max_line_length = 79 - len("; ") - injected_jpg_data = ["; " + image_jpg_base64[i:i + max_line_length] for i in range(0, len(image_jpg_base64), max_line_length)] - - # Replace the old PNG lines with the new JPEG lines - lines[thumbnail_start + 1:thumbnail_end] = [line + "\n" for line in injected_jpg_data] - - # Remove all lines before '; thumbnail_JPG begin' - lines = [line for line in lines if not line.strip() == ';' and not line.strip() == ''] - thumbnail_jpg_index = next((i for i, line in enumerate(lines) if line.startswith('; thumbnail_JPG begin')), None) - - if thumbnail_jpg_index is not None and thumbnail_jpg_index > 0: - # Check and remove the specific line if it starts with '; generated by PrusaSlicer' - if lines[thumbnail_jpg_index - 1].startswith('; generated by PrusaSlicer'): - del lines[thumbnail_jpg_index - 1] - - # Now we remove the newline before the '; thumbnail_JPG begin', if present - if thumbnail_jpg_index > 0 and lines[thumbnail_jpg_index - 1].strip() == '': - del lines[thumbnail_jpg_index - 1] - - # Write the modified content back to the original file - with open(source_file, "w") as f: - f.writelines(lines) - -if __name__ == "__main__": - if len(sys.argv) < 2: - print("Usage: python3 script.py ") - sys.exit(1) - - main(sys.argv[1])