Add "scale by"/"scale to" options

Remove settings from accordion.
master
missionfloyd 2023-06-20 16:48:13 -06:00
parent 1ba0dc4566
commit fcd96ba9fc
1 changed files with 20 additions and 8 deletions

View File

@ -34,11 +34,17 @@ def generate(selected_tab, keys, *values):
out = io.BytesIO()
qrcode = segno.make(data, micro=False, error=args["setting_error_correction"], boost_error=False)
qrcode.save(out, kind='png', scale=args["setting_scale"], border=args["setting_border"], dark=args["setting_dark"], light=args["setting_light"])
scale = 1 if args["size_mode"] == "size" else args["setting_scale"]
qrcode.save(out, kind='png', scale=scale, border=args["setting_border"], dark=args["setting_dark"], light=args["setting_light"])
except Exception as e:
return None, getattr(e, "message", str(e))
return Image.open(out), None
img = Image.open(out)
if args["size_mode"] == "size":
img = img.resize((args["setting_size"], args["setting_size"]))
return img, None
def on_ui_tabs():
with gr.Blocks() as ui_component:
@ -110,13 +116,19 @@ def on_ui_tabs():
inputs["geo_latitude"] = gr.Number(0, label="Latitude", elem_id="qrcode_geo_latitude")
inputs["geo_longitude"] = gr.Number(0, label="Longitude", elem_id="qrcode_geo_longitude")
with gr.Accordion("Settings", open=False):
inputs["size_mode"] = gr.State("size")
with gr.Tab("Scale to") as tab_size:
tab_size.select(lambda: "size", None, inputs["size_mode"])
inputs["setting_size"] = gr.Slider(label="Size", minimum=64, maximum=2048, value=512, step=8)
with gr.Tab("Scale by") as tab_scale:
tab_scale.select(lambda: "scale", None, inputs["size_mode"])
inputs["setting_scale"] = gr.Slider(label="Scale", minimum=1, maximum=50, value=10, step=1, elem_id="qrcode_scale")
inputs["setting_border"] = gr.Slider(label="Border", minimum=0, maximum=10, value=4, step=1, elem_id="qrcode_border")
with gr.Row():
inputs["setting_dark"] = gr.ColorPicker("#000000", label="Module Color")
inputs["setting_light"] = gr.ColorPicker("#ffffff", label="Background Color")
inputs["setting_error_correction"] = gr.Radio(value="H", label="Error Correction Level", choices=["L", "M", "Q", "H"], elem_id="qrcode_error_correction")
inputs["setting_border"] = gr.Slider(label="Border", minimum=0, maximum=10, value=4, step=1, elem_id="qrcode_border")
with gr.Row():
inputs["setting_dark"] = gr.ColorPicker("#000000", label="Module Color")
inputs["setting_light"] = gr.ColorPicker("#ffffff", label="Background Color")
inputs["setting_error_correction"] = gr.Radio(value="H", label="Error Correction Level", choices=["L", "M", "Q", "H"], elem_id="qrcode_error_correction")
button_generate = gr.Button("Generate", variant="primary")
status = gr.HTML()