You need to enable JavaScript to run this app.
导航
Web 端视频截图处理
最近更新时间:2024.12.02 14:55:40首次发布时间:2024.07.31 14:33:34

在你调用 takeLocalSnapshot / takeRemoteSnapshot截取本地/远端视频画面后,你通常需要对返回的 ImageData 进行处理,将其转换成 Blob、JPEG 等格式供后续使用,你可以参考以下最佳实践来实现。

步骤 1:获取 ImageData 并转化为 Canvas

// 从提取ImageData对象
var imageData = await engine.takeLocalSnapshot(StreamIndex.STREAM_INDEX_MAIN);


// 创建Canvas元素并获取上下文
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = imageData.width;
canvas.height = imageData.height;
context.putImageData(imageData, 0, 0);

步骤 2: 将 Canvas 转换为其他类型

转换为 Blob

// canvas 转 Blob
canvas.toBlob((blob) => {
    // 获取 Blob 并进行后续操作
    const file = new File([blob], "view.png", { type: "image/png" });
    const imgUrl = URL.createObjectURL(file);
    const imgElement = document.createElement('img');
    imgElement.src = imgUrl;
    document.body.appendChild(imgElement);
});

转换为 JPEG

// canvas 转 JPEG
const url = canvas.toDataURL('image/jpeg');
const a = document.createElement('a');
a.href = url;
a.download = '截图-' + Date.now();
a.click();

转换为 PNG

// canvas 转 PNG
const url = canvas.toDataURL('image/png');
const a = document.createElement('a');
a.href = url;
a.download = '截图-' + Date.now();
a.click();