boxuanwang132 commited on
Commit
df2ebce
·
verified ·
1 Parent(s): 21a7630

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -18
app.py CHANGED
@@ -1,7 +1,17 @@
1
  import gradio as gr
2
 
3
- # 1) 配置:区域名字 -> (bbox像素坐标, (before_path, after_path))
4
- # bbox = (x1, y1, x2, y2) 以 liverpool_map.png 的像素坐标为准(左上角为(0,0))
 
 
 
 
 
 
 
 
 
 
5
  REGIONS = {
6
  "Liverpool (City + Mersey)": ((120, 180, 260, 320), ("liverpool_before.jpg", "liverpool_after.jpg")),
7
  "Sefton Coast": ((260, 80, 420, 220), ("sefton_before.jpg", "sefton_after.jpg")),
@@ -9,48 +19,63 @@ REGIONS = {
9
  "St Helens / Knowsley": ((420, 160, 560, 320), ("sthelens_before.jpg", "sthelens_after.jpg")),
10
  }
11
 
12
- DEFAULT_REGION = list(REGIONS.keys())[0]
13
 
14
- def pick_region_from_click(evt: gr.SelectData):
15
- # evt.index 是 (x, y)
 
 
 
16
  x, y = evt.index
17
  for name, (bbox, paths) in REGIONS.items():
18
  x1, y1, x2, y2 = bbox
19
  if x1 <= x <= x2 and y1 <= y <= y2:
20
  before, after = paths
21
- return name, (before, after), gr.update(value=f"Selected: **{name}**")
22
- # 没点到任何区域:不更新slider,只更新提示
23
- return gr.update(), gr.update(), gr.update(value="Selected: **(click inside a region box)**")
 
 
 
 
 
 
24
 
25
  with gr.Blocks() as demo:
26
- gr.Markdown("## Liverpool Groundwater Demo (0-training)\n左侧点击区域,右侧显示该区域的 before/after 滑动对比。")
 
 
 
27
 
28
  with gr.Row():
29
  with gr.Column(scale=1):
30
- gr.Markdown("### 1) Click a region on the map")
31
  map_img = gr.Image(
32
  value="liverpool_map.jpg",
33
- label="Liverpool City Region Map (click)",
34
  interactive=True,
35
- show_download_button=False
36
  )
37
  status = gr.Markdown(f"Selected: **{DEFAULT_REGION}**")
38
 
39
  with gr.Column(scale=1):
40
- gr.Markdown("### 2) Before / After slider")
41
  before0, after0 = REGIONS[DEFAULT_REGION][1]
42
  slider = gr.ImageSlider(
43
  value=(before0, after0),
44
  label="Drag to compare",
45
- interactive=False
 
 
 
 
 
46
  )
47
- region_name = gr.Textbox(value=DEFAULT_REGION, label="Region", interactive=False)
48
 
49
- # 点击地图触发更新
50
  map_img.select(
51
- fn=pick_region_from_click,
52
  inputs=[],
53
- outputs=[region_name, slider, status]
54
  )
55
 
56
  demo.launch()
 
1
  import gradio as gr
2
 
3
+ """
4
+ Files expected in repo root:
5
+ - liverpool_map.jpg
6
+ - liverpool_before.jpg, liverpool_after.jpg
7
+ - sefton_before.jpg, sefton_after.jpg
8
+ - wirral_before.jpg, wirral_after.jpg
9
+ - sthelens_before.jpg, sthelens_after.jpg
10
+ """
11
+
12
+ # Region config:
13
+ # name -> ((x1,y1,x2,y2), (before_path, after_path))
14
+ # Coordinates are pixel coords on liverpool_map.jpg (top-left is (0,0))
15
  REGIONS = {
16
  "Liverpool (City + Mersey)": ((120, 180, 260, 320), ("liverpool_before.jpg", "liverpool_after.jpg")),
17
  "Sefton Coast": ((260, 80, 420, 220), ("sefton_before.jpg", "sefton_after.jpg")),
 
19
  "St Helens / Knowsley": ((420, 160, 560, 320), ("sthelens_before.jpg", "sthelens_after.jpg")),
20
  }
21
 
22
+ DEFAULT_REGION = next(iter(REGIONS.keys()))
23
 
24
+ def pick_region(evt: gr.SelectData):
25
+ """
26
+ Triggered when user clicks on the left map image.
27
+ evt.index is (x, y) pixel coordinate.
28
+ """
29
  x, y = evt.index
30
  for name, (bbox, paths) in REGIONS.items():
31
  x1, y1, x2, y2 = bbox
32
  if x1 <= x <= x2 and y1 <= y <= y2:
33
  before, after = paths
34
+ status_md = f"Selected: **{name}** \nClick: ({x}, {y})"
35
+ return name, (before, after), status_md
36
+
37
+ # If clicked outside any region bbox: don't update region/slider, only show coords
38
+ return (
39
+ gr.update(), # region textbox stays
40
+ gr.update(), # slider stays
41
+ f"Selected: **(click inside a region box)** \nClick: ({x}, {y})",
42
+ )
43
 
44
  with gr.Blocks() as demo:
45
+ gr.Markdown(
46
+ "## Liverpool Groundwater Demo (0-training)\n"
47
+ "左侧点击不同区域,右侧显示该区域的 **before/after** 影像滑动对比。"
48
+ )
49
 
50
  with gr.Row():
51
  with gr.Column(scale=1):
52
+ gr.Markdown("### Map (click)")
53
  map_img = gr.Image(
54
  value="liverpool_map.jpg",
55
+ label="Liverpool City Region Map",
56
  interactive=True,
 
57
  )
58
  status = gr.Markdown(f"Selected: **{DEFAULT_REGION}**")
59
 
60
  with gr.Column(scale=1):
61
+ gr.Markdown("### Before / After Slider")
62
  before0, after0 = REGIONS[DEFAULT_REGION][1]
63
  slider = gr.ImageSlider(
64
  value=(before0, after0),
65
  label="Drag to compare",
66
+ interactive=False,
67
+ )
68
+ region_name = gr.Textbox(
69
+ value=DEFAULT_REGION,
70
+ label="Region",
71
+ interactive=False,
72
  )
 
73
 
74
+ # Click event: update region_name, slider, status
75
  map_img.select(
76
+ fn=pick_region,
77
  inputs=[],
78
+ outputs=[region_name, slider, status],
79
  )
80
 
81
  demo.launch()