From 35fcd40bd3a08b355bcdecbe8867e7ec6fce441f Mon Sep 17 00:00:00 2001 From: zc Date: Wed, 11 Mar 2026 11:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=A7=86=E9=A2=91=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/weightManage/index.vue | 44 +++++++++++++++++--------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/views/weightManage/index.vue b/src/views/weightManage/index.vue index 8d2141d..1d51dae 100644 --- a/src/views/weightManage/index.vue +++ b/src/views/weightManage/index.vue @@ -822,6 +822,7 @@ const initCamera1 = () => { } // 修改前端代码,处理黑白相机的视频流数据 + // 修改前端代码,处理压缩后的JPEG图像数据 camera1Ws.value.onmessage = (event) => { try { if (camera1Canvas.value && event.data instanceof Blob) { @@ -848,34 +849,37 @@ const initCamera1 = () => { return; } - // 提取图像数据 + // 提取压缩的图像数据 const imageDataStart = 8; const imageDataLength = uint8Array.length - imageDataStart; const imageData = uint8Array.subarray(imageDataStart); - // 设置canvas尺寸 - camera1Canvas.value.width = width; - camera1Canvas.value.height = height; + // 创建Blob对象并转换为URL + const blob = new Blob([imageData], { type: 'image/jpeg' }); + const imageUrl = URL.createObjectURL(blob); - // 获取canvas上下文 - const ctx = camera1Canvas.value.getContext('2d'); - if (ctx) { - // 创建ImageData对象 - const canvasImageData = ctx.createImageData(width, height); + // 创建Image对象并显示 + const img = new Image(); + img.onload = () => { + // 设置canvas尺寸 + camera1Canvas.value.width = width; + camera1Canvas.value.height = height; - // 对于黑白相机,数据是单通道灰度格式 - // 将单通道灰度数据转换为RGBA格式 - for (let i = 0, j = 0; i < imageData.length && j < canvasImageData.data.length; i++, j += 4) { - const gray = imageData[i]; - canvasImageData.data[j] = gray; // R - canvasImageData.data[j + 1] = gray; // G - canvasImageData.data[j + 2] = gray; // B - canvasImageData.data[j + 3] = 255; // A (不透明) + // 获取canvas上下文 + const ctx = camera1Canvas.value.getContext('2d'); + if (ctx) { + // 绘制图像 + ctx.drawImage(img, 0, 0, width, height); } - // 将ImageData绘制到canvas上 - ctx.putImageData(canvasImageData, 0, 0); - } + // 释放URL对象 + URL.revokeObjectURL(imageUrl); + }; + img.onerror = () => { + console.error('图像加载失败'); + URL.revokeObjectURL(imageUrl); + }; + img.src = imageUrl; } }; reader.readAsArrayBuffer(event.data);