pooyanrg commited on
Commit
491943f
·
1 Parent(s): 9d3e8f3
__pycache__/app.cpython-312.pyc CHANGED
Binary files a/__pycache__/app.cpython-312.pyc and b/__pycache__/app.cpython-312.pyc differ
 
app.py CHANGED
@@ -212,7 +212,7 @@ def process_example(image_path_bef, image_path_aft):
212
  image_aft_grid, _, _ = add_grid_to_image(image_path_aft, 14)
213
  return image_bef_grid, image_aft_grid # Reset selected cells and store original image
214
 
215
- def display_image(image_path):
216
  w, h = Image.open(image_path).convert('RGB').size
217
  return w, h
218
 
@@ -246,14 +246,21 @@ with gr.Blocks() as demo:
246
 
247
  with gr.Column(scale=1):
248
 
249
- html_text = f"""
250
  <div id="container">
251
- <canvas id="canvas" width="{width}" height="{height}"></canvas><img id="canvas-background" style="display:none;"/>
252
  </div>
253
  """
254
 
255
- html_bef = gr.HTML(html_text)
256
- html_aft = gr.HTML(html_text)
 
 
 
 
 
 
 
257
 
258
 
259
  # image_display_with_grid_bef = gr.Image(type="pil", label="Before Image with Grid")
@@ -279,9 +286,9 @@ with gr.Blocks() as demo:
279
  examples=[["data/images/CLEVR_default_000572.png", "data/images/CLEVR_semantic_000572.png"],
280
  ["data/images/CLEVR_default_003339.png", "data/images/CLEVR_semantic_003339.png"]],
281
  inputs=[image_bef, image_aft],
282
- # outputs=[image_display_with_grid_bef, image_display_with_grid_aft],
283
  label="Example Images",
284
- # fn=process_example,
285
  examples_per_page=5
286
  )
287
 
@@ -316,14 +323,14 @@ with gr.Blocks() as demo:
316
  fn=None,
317
  inputs=[image_bef],
318
  outputs=[],
319
- _js="(image) => { initializeEditor(); importBackground(image); return []; }",
320
  )
321
 
322
  image_aft.change(
323
  fn=None,
324
  inputs=[image_aft],
325
  outputs=[],
326
- _js="(image) => { initializeEditor(); importBackground(image); return []; }",
327
  )
328
 
329
 
 
212
  image_aft_grid, _, _ = add_grid_to_image(image_path_aft, 14)
213
  return image_bef_grid, image_aft_grid # Reset selected cells and store original image
214
 
215
+ def get_image_size(image_path):
216
  w, h = Image.open(image_path).convert('RGB').size
217
  return w, h
218
 
 
246
 
247
  with gr.Column(scale=1):
248
 
249
+ html_text_bef = f"""
250
  <div id="container">
251
+ <canvas id="before" width="{width}" height="{height}"></canvas><img id="canvas-background" style="display:none;"/>
252
  </div>
253
  """
254
 
255
+ html_text_aft = f"""
256
+ <div id="container">
257
+ <canvas id="after" width="{width}" height="{height}"></canvas><img id="canvas-background" style="display:none;"/>
258
+ </div>
259
+ """
260
+
261
+ html_bef = gr.HTML(html_text_bef)
262
+ gr.HTML("<br>")
263
+ html_aft = gr.HTML(html_text_aft)
264
 
265
 
266
  # image_display_with_grid_bef = gr.Image(type="pil", label="Before Image with Grid")
 
286
  examples=[["data/images/CLEVR_default_000572.png", "data/images/CLEVR_semantic_000572.png"],
287
  ["data/images/CLEVR_default_003339.png", "data/images/CLEVR_semantic_003339.png"]],
288
  inputs=[image_bef, image_aft],
289
+ outputs=[width, height],
290
  label="Example Images",
291
+ fn=get_image_size,
292
  examples_per_page=5
293
  )
294
 
 
323
  fn=None,
324
  inputs=[image_bef],
325
  outputs=[],
326
+ _js="(image) => { initializeEditorBefore(); importBackground(image); return []; }",
327
  )
328
 
329
  image_aft.change(
330
  fn=None,
331
  inputs=[image_aft],
332
  outputs=[],
333
+ _js="(image) => { initializeEditorAfter(); importBackground(image); return []; }",
334
  )
335
 
336
 
js/interactive_grid.js CHANGED
@@ -68,7 +68,7 @@ function drawGrid() {
68
  }
69
 
70
 
71
- function initializeEditor() {
72
  console.log("initializeEditor");
73
 
74
  if (isInitialized) {
@@ -77,7 +77,54 @@ function initializeEditor() {
77
  isInitialized = true;
78
 
79
  image = document.getElementById('image');
80
- canvas = document.getElementById('canvas');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  ctx = canvas.getContext('2d');
82
 
83
  // Add click event listener to canvas
 
68
  }
69
 
70
 
71
+ function initializeEditorBefore() {
72
  console.log("initializeEditor");
73
 
74
  if (isInitialized) {
 
77
  isInitialized = true;
78
 
79
  image = document.getElementById('image');
80
+ canvas = document.getElementById('before');
81
+ ctx = canvas.getContext('2d');
82
+
83
+ // Add click event listener to canvas
84
+ canvas.addEventListener('mousedown', handleMouseDown);
85
+ canvas.addEventListener('mousemove', handleMouseMove);
86
+ canvas.addEventListener('mouseup', handleMouseUp);
87
+ canvas.addEventListener('mouseleave', handleMouseLeave);
88
+
89
+ cellSize = canvas.width / gridSize;
90
+
91
+ canvas.addEventListener('click', (event) => {
92
+ const rect = canvas.getBoundingClientRect();
93
+ const scaleX = canvas.width / rect.width;
94
+ const scaleY = canvas.height / rect.height;
95
+ const x = (event.clientX - rect.left) * scaleX;
96
+ const y = (event.clientY - rect.top) * scaleY;
97
+ const row = Math.floor(y / cellSize);
98
+ const col = Math.floor(x / cellSize);
99
+
100
+ // If the cell is already selected, it's always allowed to deselect it
101
+ if (grid[row][col]) {
102
+ grid[row][col] = false;
103
+ selectedCells--; // Decrement the selected cell count
104
+ } else {
105
+ // Only select a new cell if less than 50 cells are already selected
106
+ if (selectedCells < 50) {
107
+ grid[row][col] = true;
108
+ selectedCells++; // Increment the selected cell count
109
+ }
110
+ }
111
+ drawGrid();
112
+ });
113
+
114
+ drawGrid();
115
+ }
116
+
117
+
118
+ function initializeEditorAfter() {
119
+ console.log("initializeEditor");
120
+
121
+ if (isInitialized) {
122
+ return;
123
+ }
124
+ isInitialized = true;
125
+
126
+ image = document.getElementById('image');
127
+ canvas = document.getElementById('after');
128
  ctx = canvas.getContext('2d');
129
 
130
  // Add click event listener to canvas