diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiRoiController.java b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiRoiController.java index 1b3b6604a..2d5a74096 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiRoiController.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiRoiController.java @@ -85,10 +85,26 @@ public class AiRoiController { @Operation(summary = "获取摄像头截图(Edge截图 → COS URL)") @GetMapping("/snap") - public Map getSnap( + public ResponseEntity getSnap( @RequestParam String cameraCode, - @RequestParam(defaultValue = "false") boolean force) { - return screenshotService.requestScreenshot(cameraCode, force); + @RequestParam(defaultValue = "false") boolean force, + @RequestHeader(value = "Accept", defaultValue = "application/json") String accept) { + + Map result = screenshotService.requestScreenshot(cameraCode, force); + + // 如果是 标签发起的请求(Accept: image/*),直接返回图片字节 + if (accept.contains("image/") && "ok".equals(result.get("status"))) { + byte[] image = screenshotService.proxyScreenshotImage(cameraCode); + if (image != null) { + return ResponseEntity.ok() + .contentType(MediaType.IMAGE_JPEG) + .header("Cache-Control", "max-age=60") + .body(image); + } + } + + // 默认返回 JSON(XHR/fetch 请求) + return ResponseEntity.ok(result); } @Operation(summary = "Edge 截图回调(Edge 主动调用)")