Spaces:
Sleeping
Sleeping
Commit ·
124eb9e
1
Parent(s): 18f2413
Centrar la imagen del editor de zona con zoom del navegador distinto de 100%
Browse filesCon zoom 90% el lienzo del editor de Gradio 6.30 quedaba más ancho que su
recuadro (1853 px en uno de 916): la imagen aparecía corrida a la derecha,
cortada, y no se podía pintar encima. Al cargar la página, al subir un video,
al borrar la zona y al cambiar el zoom, se ajusta el lienzo al recuadro y se
vuelve a encuadrar la imagen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- camguard/ui.py +24 -2
camguard/ui.py
CHANGED
|
@@ -22,6 +22,27 @@ BRUSH_SIZE = 60
|
|
| 22 |
# Gradio borra sus copias de videos subidos y resultados: cada media hora, las de más de 1 hora.
|
| 23 |
CACHE_CLEANUP = (1800, 3600)
|
| 24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
# Hugging Face define SPACE_ID en todo Space; en la PC no existe.
|
| 26 |
WHERE = (
|
| 27 |
"> 🔒 **El video se procesa en servidores de Hugging Face.** No subas grabaciones reales o "
|
|
@@ -157,8 +178,9 @@ def build_demo() -> gr.Blocks:
|
|
| 157 |
)
|
| 158 |
gallery = gr.Gallery(label="Momento de entrada de cada intruso", columns=4)
|
| 159 |
|
| 160 |
-
|
| 161 |
-
|
|
|
|
| 162 |
run.click(on_analyze, [video, editor], [result, table, gallery])
|
| 163 |
return demo
|
| 164 |
|
|
|
|
| 22 |
# Gradio borra sus copias de videos subidos y resultados: cada media hora, las de más de 1 hora.
|
| 23 |
CACHE_CLEANUP = (1800, 3600)
|
| 24 |
|
| 25 |
+
# Arregla el editor de Gradio (6.30) cuando el zoom del navegador no es 100%: su lienzo queda
|
| 26 |
+
# más ancho que el recuadro (1853 px en uno de 916 con zoom 90%), centra la imagen sobre ese
|
| 27 |
+
# ancho y se ve corrida a la derecha, cortada, sin poder pintar encima. Ajusta el lienzo al
|
| 28 |
+
# recuadro y vuelve a encuadrar la imagen; se repite unos segundos para cubrir la carga lenta de
|
| 29 |
+
# la imagen, y al cambiar el zoom o el tamaño de la ventana. window.editor es interno de Gradio:
|
| 30 |
+
# si deja de existir, no hace nada.
|
| 31 |
+
REFIT_EDITOR_JS = """() => {
|
| 32 |
+
if (!window.camguardRefit) {
|
| 33 |
+
window.camguardRefit = () => {
|
| 34 |
+
try {
|
| 35 |
+
const editor = window.editor;
|
| 36 |
+
const box = editor.target_element.getBoundingClientRect();
|
| 37 |
+
editor.resize_canvas(box.width, box.height);
|
| 38 |
+
editor.tools.get("zoom").set_zoom("fit");
|
| 39 |
+
} catch {}
|
| 40 |
+
};
|
| 41 |
+
window.addEventListener("resize", () => setTimeout(window.camguardRefit, 100));
|
| 42 |
+
}
|
| 43 |
+
for (const ms of [300, 1000, 2500, 5000]) setTimeout(window.camguardRefit, ms);
|
| 44 |
+
}"""
|
| 45 |
+
|
| 46 |
# Hugging Face define SPACE_ID en todo Space; en la PC no existe.
|
| 47 |
WHERE = (
|
| 48 |
"> 🔒 **El video se procesa en servidores de Hugging Face.** No subas grabaciones reales o "
|
|
|
|
| 178 |
)
|
| 179 |
gallery = gr.Gallery(label="Momento de entrada de cada intruso", columns=4)
|
| 180 |
|
| 181 |
+
demo.load(None, js=REFIT_EDITOR_JS)
|
| 182 |
+
video.upload(blank_zone, video, editor).then(None, js=REFIT_EDITOR_JS)
|
| 183 |
+
clear.click(blank_zone, video, editor).then(None, js=REFIT_EDITOR_JS)
|
| 184 |
run.click(on_analyze, [video, editor], [result, table, gallery])
|
| 185 |
return demo
|
| 186 |
|