hdremover commited on
Commit
52a16e2
·
verified ·
1 Parent(s): 536603a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -5
app.py CHANGED
@@ -59,11 +59,15 @@ def run_pipeline(
59
  gc.collect()
60
  progress(1.0, desc="Done")
61
 
62
- status = f"✅ Generated at exact 300 DPI — {STANDARDS[spec_choice].width_mm}×{STANDARDS[spec_choice].height_mm}mm"
63
  if sheet is not None:
64
  status += f" · tiled on {paper_key}"
65
 
66
- return photo, sheet, status
 
 
 
 
67
 
68
  except ValueError as e:
69
  # Expected, user-facing errors (no face detected, bad spec, photo
@@ -127,9 +131,12 @@ def build_interface() -> gr.Blocks:
127
  generate_btn = gr.Button("Generate Photo", variant="primary", size="lg")
128
 
129
  with gr.Column(scale=1):
130
- out_photo = gr.Image(type="pil", label="Passport Photo (300 DPI)")
131
- out_sheet = gr.Image(type="pil", label="Print Sheet")
 
 
132
  status_box = gr.Markdown()
 
133
 
134
  # Update the color picker default whenever the standard changes,
135
  # so the user sees the correct expected background before they
@@ -147,7 +154,7 @@ def build_interface() -> gr.Blocks:
147
  inp_image, spec_dropdown, bg_color, paper_dropdown,
148
  zoom_slider, x_slider, y_slider,
149
  ],
150
- outputs=[out_photo, out_sheet, status_box],
151
  )
152
 
153
  reset_crop_btn.click(
 
59
  gc.collect()
60
  progress(1.0, desc="Done")
61
 
62
+ status = f"✅ **{spec_choice}** — {STANDARDS[spec_choice].width_mm}×{STANDARDS[spec_choice].height_mm}mm @ 300 DPI ({photo.width}×{photo.height}px)"
63
  if sheet is not None:
64
  status += f" · tiled on {paper_key}"
65
 
66
+ # ImageSlider needs a (before, after) pair at the same canvas. We
67
+ # hand it (original upload, final result) — Gradio letterboxes/
68
+ # fits internally, so mismatched source aspect ratios display fine;
69
+ # it's a visual compare, not a pixel-aligned overlay.
70
+ return (image, photo), sheet, status
71
 
72
  except ValueError as e:
73
  # Expected, user-facing errors (no face detected, bad spec, photo
 
131
  generate_btn = gr.Button("Generate Photo", variant="primary", size="lg")
132
 
133
  with gr.Column(scale=1):
134
+ out_compare = gr.ImageSlider(
135
+ label="Before / After — drag to compare",
136
+ type="pil",
137
+ )
138
  status_box = gr.Markdown()
139
+ out_sheet = gr.Image(type="pil", label="Print Sheet")
140
 
141
  # Update the color picker default whenever the standard changes,
142
  # so the user sees the correct expected background before they
 
154
  inp_image, spec_dropdown, bg_color, paper_dropdown,
155
  zoom_slider, x_slider, y_slider,
156
  ],
157
+ outputs=[out_compare, out_sheet, status_box],
158
  )
159
 
160
  reset_crop_btn.click(