mirror of
https://github.com/GiggioG/thermal-printer.git
synced 2026-06-18 03:49:25 +00:00
begin documenting the project, README
This commit is contained in:
47
reverse_engineering/img_v2.py
Normal file
47
reverse_engineering/img_v2.py
Normal file
@@ -0,0 +1,47 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user