javascript - 尽管我可以在控制台上看到 Blob 图像,但它不会显示在 UI 上

标签 javascript reactjs image html5-canvas blob

我正在尝试创建多个 blob 图像,并在视频时间轴 UI 中显示它们。为了创建图像,我在某些特定时间范围内截取视频的屏幕截图,并创建 img 元素,然后添加 img.src 作为 blob 图像的 url。问题是 blob 图像未显示在 UI 上,尽管我可以在控制台上看到它们。有什么想法吗?

创建 blob 图像的代码片段:

// draw the video frame to canvas
const ctx = canvas.getContext("2d");
ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);
ctx.canvas.toBlob(
    blob => {
        resolve(blob);
    },
    "image/jpeg",
    0.75 /* quality */
);

创建图像的代码片段:

let img = '';
for (let i = 0; i < count / 3; i++) {
    const cover = await GetVideoCover(item.video_url, i);
    var url = URL.createObjectURL(cover);
    var image = new Image();
    image.src = url;
    img += "<img src='"+image.src+"'>";
    console.log(img)
}
return img;

来自console.log(img)行的控制台日志:

enter image description here

实际的 html img 元素:

enter image description here

当我如下手动更新源时,它可以工作,但我不明白为什么它本身没有获取源。任何想法将不胜感激。

enter image description here

最佳答案

尝试在 image 元素上注册一个 onload 事件监听器,然后在事件监听器中处理依赖于该图像的所有代码,如下所示:

for (let i = 0; i < count / 3; i++) {
    const cover = await GetVideoCover(item.video_url, i);
    var url = URL.createObjectURL(cover);
    var image = new Image();
    image.src = url;
    image.addEventListener('load', (event) => {
    // perform some magic here e.g append to DOM or draw the image to canvas
    }
}

关于javascript - 尽管我可以在控制台上看到 Blob 图像,但它不会显示在 UI 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73171188/

相关文章:

html - 在 VBA 中使用 ReactJS 选择 HTML 下拉列表

javascript - Xterm.js : How to hide xterm-helper-textarea?

xcode - ImageMagick SDK 错误 : "Undefined symbols for architecture armv7"

javascript - 按计数下载图像

javascript - 添加 Access-Control-Allow-Origin : * 后仍然出现 "No ' Access Control Allow Origin' header is present on the requested resources”错误

javascript - 删除对象数组中的记录 jQuery

java - 过滤 rgb 图像在 java 中只能工作一次

javascript - 在数组中查找项目并推送到其他数组

javascript - 如何在 react componentDidUpdate 方法中触发 redux 操作?

php - 更好质量的缩略图