thermal-printer/reverse_engineering/img_v2.py

47 lines
1.2 KiB
Python

from math import ceil
from PIL import Image
import glob
import os
os.makedirs("dataImg", exist_ok=True)
def getColor(value):
return (value, value, value)
# Find all files matching data*.txt
for data_file in glob.glob("data/data*.txt"):
with open(data_file, "r") as f:
data = f.read().replace('\n', '')
bytes_array = [int(data[i:i+2], 16) for i in range(0, len(data), 2)]
runs_array = []
run = []
runSum = 0
for b in bytes_array:
run.append(b)
runSum += b
if b == 255:
runs_array.append(run)
run = []
if len(run) > 0 and runSum > 0:
runs_array.append(run)
if not runs_array:
continue
HEIGHT = len(runs_array)
WIDTH = max(len(run) for run in runs_array)
img = Image.new("RGB", (WIDTH, HEIGHT))
for i in range(HEIGHT):
for j in range(WIDTH):
if j < len(runs_array[i]):
img.putpixel((j, i), getColor(runs_array[i][j]))
else:
img.putpixel((j, i), (255, 0, 255))
# Generate output filename: image#.png
base = data_file.split('\\')[-1].split('.')[0] # Get base name without extension
output_file = f"dataImg/{base}.png"
img.save(output_file)