pixel_mapping / app.py
Omnibus's picture
Update app.py
b372c11 verified
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()