import gradio as gr from PIL import Image def sort_doc(in_list: list, steps_in: int, control: int, prev_list: str): control_json={'control':'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','char':'','leng':62} key_cnt=len(in_list) print(key_cnt) control_char=list(control_json['control']) char_len=len(control_char) if not steps_in: n_cnt=0 nx=key_cnt while True: if nx >= 1: n_cnt+=1 nx = nx/char_len else: steps=n_cnt break if steps_in: steps=steps_in if control: control_len=control_json['leng']-control control_char=list(control_json['control'][:control_len]) control_val=list(control_json['control'][control_len:]) val_len=len(control_val) control_val_box=[] for ea in control_val: control_val_box.append(ea) print(f'CONTROL_VAL_BOX:: {control_val_box}') #prev_list=control_val_box json_out={} big_cnt=0 cnt=0 go=True step_cont_box=[] if prev_list: print("LOD") last_key=list(prev_list.keys())[-1] print(last_key) for ea_dig in last_key: ea_dig=control_json['control'].index(ea_dig) ea_dig=int(ea_dig) print(f'{ea_dig} :: {list(control_json["control"][ea_dig])[0]}') #step_cont_box.append(int(list(control_json["control"][ea_dig])[0])) step_cont_box.append(ea_dig) print(step_cont_box) cnt=int(step_cont_box[-1])+1 if not prev_list: print("NOT LOD") for ii in range(steps): print(ii) step_cont_box.append(0) pos=len(step_cont_box)-1 if go: for i, ea in enumerate(in_list): if go: if cnt > char_len-1: #print(step_cont_box) go1=True for ii,ev in enumerate(step_cont_box): if go: if ev >= char_len-1: step_cont_box[ii]=0 if go1==True: step_cont_box[ii-1]=step_cont_box[ii-1]+1 go1=False cnt=1 else: step_cont_box[pos]=cnt cnt+=1 #print(step_cont_box) out_js="" for iii,j in enumerate(step_cont_box): #print(j) out_js = out_js+control_char[j] json_out[out_js]=in_list[i] big_cnt+=1 if big_cnt==key_cnt: print("DONE") go=False return json_out def get_pixels(im): img=Image.open(im) pixels = img.load() # create the pixel map im_width=img.size[0] im_height=img.size[1] print(f'{im_width} :: {im_height}') pixel_box=[] pixel_list={} for i in range(im_width): # for every col: for j in range(im_height): # For every row pixel = pixels[i,j] r,g,b=pixels[i,j] if str(pixel) in pixel_box: #print("YES") pixel_list[str(pixel)].append((i,j)) print(pixel_list[str(pixel)]) else: #pixel_box.append({f'{pixels[i,j]}':[(i,j)]}) pixel_list[str(pixel)]=[(i,j)] pixel_box.append(str(pixel)) #pixels[i,j] = (i, j, 100) # set the colour accordingly #print(pixels[i,j]) #for ea in pixel_box: print(len(pixel_list)) print(len(pixel_box)) return pixel_list with gr.Blocks() as app: in_im=gr.Image(type='filepath') go_btn=gr.Button() out_json=gr.JSON() go_btn.click(get_pixels,in_im,out_json) app.launch()