CreatBotKlipperScreen/scripts/extract_prusa_thumbnails.py

48 lines
1.3 KiB
Python

#
import re
import base64
dir = "/home/pi/sdcard/"
file = "square_tower_0.2mm_PLA_ENDER3_46m.gcode"
#f = f.open(file, 'r')
thumbnails = []
cur_thumbnail = {}
state = 0
with open(dir + file, 'r') as f:
for line in f:
if state == 0:
match = re.match(r'^; thumbnail begin ([0-9]+)x([0-9]+) ([0-9]+)', line)
if match:
cur_thumbnail = {
"width": match.group(1),
"height": match.group(2),
"size": match.group(3),
"data": ""
}
state = 1
continue
elif state == 1:
if re.match (r'^; thumbnail end', line):
state = 0
thumbnails.append(cur_thumbnail)
continue
match = re.match(r'^; (\S+)$', line)
if match:
cur_thumbnail['data'] += match.group(1)
if len(thumbnails) > 0:
biggest = 0
for i in range(len(thumbnails)):
if i == 0:
continue
if thumbnails[i]['width'] > thumbnails[biggest]['width']:
biggest = i
image = base64.decodestring(thumbnails[biggest]['data'])
name = file.split('.gcod')[0] + ".png"
f = open(dir + name, 'wb')
f.write(image)
f.close()