From 963114b37a34f4cc9918f1ef6a26f75efb15a01d Mon Sep 17 00:00:00 2001 From: localhorst Date: Sun, 20 Nov 2022 21:13:44 +0100 Subject: [PATCH] dynamic text layout, outline box --- layouter.py | 50 ++++++++++++++++++++++++++++++++++++++------------ output.png | Bin 0 -> 2717 bytes 2 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 output.png diff --git a/layouter.py b/layouter.py index 2d481e2..4f78fbe 100644 --- a/layouter.py +++ b/layouter.py @@ -99,9 +99,42 @@ def format_to_printable(drive): cut_string(30, datetime.datetime.utcfromtimestamp(drive.shred_timestamp).strftime('%Y-%m-%d %H:%M:%S')),\ cut_string(30, str(datetime.timedelta(seconds = drive.shred_duration)))) +def draw_text(drawable, printable_data, text_y_offset): + font_file = get_font_path() + font_size = 20 + text_x_offset = 10 + text_x_offset_increment = 25 + + drawable.text((text_y_offset, text_x_offset), "Familiy: " + printable_data.modelfamiliy,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Model: " + printable_data.modelname,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Serial: " + printable_data.serialnumber,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Hours: " + printable_data.power_on_hours,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Cycles: " + printable_data.power_cycle,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Errors: " + printable_data.smart_error_count,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Shred on: " + printable_data.shred_timestamp,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + drawable.text((text_y_offset, text_x_offset), "Duration: " + printable_data.shred_duration,(0),font=ImageFont.truetype(font_file, font_size)) + text_x_offset += text_x_offset_increment + +def draw_outline(drawable, margin, width, output_width, output_height): + #upper + drawable.line([(margin,margin), (output_width -margin ,margin)], fill=None, width=width, joint=None) + #left + drawable.line([(margin,margin), (margin ,output_height-margin)], fill=None, width=width, joint=None) + #right + drawable.line([(output_width-margin,margin), (output_width-margin ,output_height-margin)], fill=None, width=width, joint=None) + #lower + drawable.line([(margin,output_height - margin), (output_width-margin,output_height -margin)], fill=None, width=width, joint=None) + + def main(): - output_width = 696 output_height = 348 @@ -112,19 +145,12 @@ def main(): text_y_offset= int(output_width / 3) output_image = Image.new('1', (output_width, output_height), "white") - font_file = get_font_path() - draw = ImageDraw.Draw(output_image) - - draw.text((text_y_offset, 5), "modelfamiliy: " + printable_data.modelfamiliy,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 20), "modelname: " + printable_data.modelname,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 35), "serial: " + printable_data.serialnumber,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 50), "poweronhours: " + printable_data.power_on_hours,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 65), "powercycle: " + printable_data.power_cycle,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 80), "errorcount: " + printable_data.smart_error_count,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 95), "shredtimestamp: " + printable_data.shred_timestamp,(0),font=ImageFont.truetype(font_file, 15)) - draw.text((text_y_offset, 110), "shredduration: " + printable_data.shred_duration,(0),font=ImageFont.truetype(font_file, 15)) + draw_outline(draw, 4, 5, output_width, output_height) + + + draw_text(draw, printable_data, text_y_offset) output_image.save("output.png") diff --git a/output.png b/output.png new file mode 100644 index 0000000000000000000000000000000000000000..2954476c8c0b106fbc53e8eaefbcfd80d2b64445 GIT binary patch literal 2717 zcmbuB`9IT-1IOR)D@P&AF^aJW^ZCTek)x?t7ORFFDTL`W*RbRmk{DCYLP8%+ZiOM! zoFzm#=9rITgpWJRVvTQ~zv27i>-FRF^?1BquOxfaMM-f*aR2}$Z7w0u0Kne}0DP`| zzYRd*;U)fEGDI*3feN4eL~rl5UcVlkNJIo~ae&Qmk5?k%}j$ zy+&v62vun(Ajv*#!+A`Avap6qv)Nsz32F{c0!l&JCu{`I!Birtm!KO57& zlC}yJ(=^Qt8s@bT?}f{JYw)HePupm-rn{!TzCbuvR#K*7&ndZir+zP77h4ujEP#-L zYTsXQ-vsjY`>g4AOW>WAQ*<8hRbXy>Wm~;_r5fYSl+rT0w_!@2Sbs;7zE%+*Y5&?O zZPbZFq48r@u)_EBPVxjH)cK>|9`ehu<#nm$VY*_8u#j8%q{(NOL~d#mOU2T}2D+ox z)6jX5^7++!uiLRl4M{766w`rqrSTf3E5bj}X6ylRkAW1Ez1 z5+e@%deYVSoI9af1s#sLkWeogSdgEf)Jz?Q;=jk{WdA7V-!%4_{UmvE$fg9v3n~12 zCC;Xdp(S>apdI7cE_rr7DlPcA%qnLTZJF(qJpGVOLv}zUG(k>Y6(>O=a*}&1T!nL z&#^5}V~`T(?C1z^CSZeC>HoM32p$pel}jF|0}96Kt_SzzbVLl@s!Tb90_bgJR+pnY z=8!5;*K{JpZNXRj7~pm25jBu`SLqz;bY)cwVo%{Ca+_ zV51zgyvK^uW6k!@9<`_-mwN^I|CO=F@~X%msfsff9YeP7Q6#-%)Mv#s&%Dm*sx&eu zx{0~U`1Oc@nXm7|=o5}(H`N>5TQ|jn-L}9`>j#^17RKhajx)t`=bViE{qt8r){79z z$7_X@pDpup&!!JdT;|gog?R6qyp0F9w-wWnIPECD4$-YboK3je(T-HIp=tstm*;1cItWdpXJHPEdyYDe|jv%nAV*q=_QM4ENbkga)~T501r*Y+aRnzdxYFQ4-c@0lS7PM84m$_uG#O|DZ#iiUANS?f~u z_Bz9-wLa{p*E&@#h}8=*5)h@j1TUoCgx8PGdfRiPF6#>ijEgWb-m>q6ZrUS+ zbC2u|IXqkq<;1G~bmSzlZ^7<);*E<(g-?VAJLedqPE5ke zb|`2S^F3SHB_nxEIAht6EDe0%VYO&0&$vj?yT(eO5{COlzUaLe8{{e7zP5&7MiRb1 z#*lfCi$^TdbF~wb+~YwU`OK7^LSh8$lUX9+JeQ6*(aaYwO$y>A)oqQ*hiSYk*LPs1 zdMPmCUSU|#1$mPW9?Lr!b!NvHf;ZOMWY=DffSH#gn{5z3?it{g_^H>(Fr@cKqZbVlf?t$}CMFZ>@qQPk%14@AP>IY-k| zc(D2&l5PruCD70}bH`L<$p2sq!`lfsze_UtYB`7}jBMIx>Zpw>;sa+W5I&2yVV`RI zYrQrk$|CoX=l)&JnlZzVgu4UEm^@1U`_F#*9qOiQYfpL+Fyo~^Ty)+F7oh?97q}>R z^Cq}lx*gWRH09Z)U2Q$KyBI-HRv73Vp>wdA+|$mKsh$RnJQIT=rAw@C_l$(Px8QS7 z-_x-OL^?rW4z@MWsp49$tv7fDp3~_@lNes0mv4L??yU=-`f=FyL`x6a$J@+*(*Laf z$)?|