48 lines
1.3 KiB
Python
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()
|