From 946b1f255d93458cb5ebbe4877ba426b38e1a3b2 Mon Sep 17 00:00:00 2001 From: Fisch Date: Sun, 31 Dec 2023 14:01:44 +0100 Subject: [PATCH] add option for nodered payload output --- imagegenerator/generate.py | 62 +++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/imagegenerator/generate.py b/imagegenerator/generate.py index d4c2b02..5ae8772 100644 --- a/imagegenerator/generate.py +++ b/imagegenerator/generate.py @@ -9,10 +9,11 @@ parser = argparse.ArgumentParser( parser.add_argument('filename') # positional argument parser.add_argument('-o', '--output') # option that takes a value +parser.add_argument('-f', '--format', choices=['firmware','nodered','nodered_int'], default='firmware', help='Output format') # option that takes a value parser.add_argument('-v', '--verbose', action='store_true') # on/off flag args = parser.parse_args() -print(args.filename, args.output, args.verbose) +print(args.filename, args.output, args.format,args.verbose) im = Image.open(args.filename) # Can be many different formats. @@ -20,6 +21,41 @@ pix = im.load() print(im.size) # Get the width and hight of the image for iterating over print(pix[10,10]) # Get the RGBA Value of the a pixel of an image +output_pre="" +output_col_preL="" +output_col_writeCol_flag=False +output_col_preR="" +output_col_write_binary_flag=False +output_col_write_int_flag=False +output_col_post="" +output_post="" + +if args.format=='firmware': + output_pre="" + output_col_preL="backBuffer[" + output_col_writeCol_flag=True + output_col_preR="]=0b" + output_col_write_binary_flag=True + output_col_post=";\n" +elif args.format=='nodered': #Nodered Binary + output_pre="msg.payload=\"\\\n" + output_col_preL="" + output_col_writeCol_flag=False + output_col_preR="" + output_col_write_binary_flag=True + output_col_post="\\\n" + output_post="\";\nreturn msg;" +elif args.format=='nodered_int': #Nodered Int + output_pre="msg.payload=\"\\\n" + output_col_preL="" + output_col_writeCol_flag=False + output_col_preR="" + output_col_write_int_flag=True + output_col_post="," + output_post="\";\nreturn msg;" + + + def calculateDistance(x1,y1,x2,y2): @@ -27,21 +63,31 @@ def calculateDistance(x1,y1,x2,y2): return dist with open('result.txt', 'w') as f: + f.write(output_pre) for x in range(im.size[0]): - f.write("backBuffer[") - f.write(str(x)) - f.write("]=0b") + f.write(output_col_preL) + if output_col_writeCol_flag: + f.write(str(x)) + f.write(output_col_preR) + + columnValue=0 for y in reversed(range(im.size[1])): c = pix[x,y] #get pixel if (c[0]>127): - f.write("1") + if output_col_write_binary_flag: + f.write("1") + columnValue+=pow(2,y) else: - f.write("0") + if output_col_write_binary_flag: + f.write("0") + + if output_col_write_int_flag: + f.write(str(columnValue)) - f.write(";") - f.write('\r\n') + f.write(output_col_post) + f.write(output_post)