From c287caf7c16c0f9096ce04ffeffcb9bccb102219 Mon Sep 17 00:00:00 2001 From: gx Date: Fri, 22 May 2026 05:38:45 +0100 Subject: [PATCH] =?UTF-8?q?controller:=20browser=5Foverlays=20=E2=80=94=20?= =?UTF-8?q?resize=20screenshot=20=D0=BA=20target=20w=5Fpx=C3=97h=5Fpx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Без resize element screenshot возвращался в native dims (e.g. Grafana panel 790×258), не fitting configured overlay slot (1280×180 = info strip). Result — overflow + gap. С resize (LANCZOS) PNG exactly w_px×h_px, fills slot полностью. Trade-off: если aspect не совпадает (panel 3:1 → strip 7:1), будет растяжение horizontal. User responsibility tune w_px/h_px к нужным пропорциям. Verified: GPU/VRAM panel 790×258 → 1280×180 readable, lines + labels OK. Co-Authored-By: Claude Opus 4.7 --- controller/cuda_grid_controller/browser_overlays.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/controller/cuda_grid_controller/browser_overlays.py b/controller/cuda_grid_controller/browser_overlays.py index b6008a2..9497677 100644 --- a/controller/cuda_grid_controller/browser_overlays.py +++ b/controller/cuda_grid_controller/browser_overlays.py @@ -202,6 +202,11 @@ class BrowserRenderer: img = Image.open(io.BytesIO(screenshot_bytes)) if img.mode != "RGBA": img = img.convert("RGBA") + # Resize к target w_px×h_px — overlay поместится exactly в configured slot. + # Без resize element скриншот возвращается в native dims (e.g. 790×258 для + # Grafana panel) → overflow / gap в slot. LANCZOS = high-quality downscale. + if img.size != (cfg.w_px, cfg.h_px): + img = img.resize((cfg.w_px, cfg.h_px), Image.LANCZOS) path = self.icon_dir / f"{cfg.id}.png" tmp = path.with_suffix(".png.tmp") img.save(tmp, "PNG")