[英]Blob images does not show up at UI, although I can see them on console
我正在嘗試創建多個 blob 圖像,並將它們顯示為視頻時間線 UI。 為了創建圖像,我截取了某些時間幀的視頻截圖,並創建了 img 元素,然后將 img.src 添加為 blob 圖像的 url。 問題是blob 圖像沒有顯示在 UI 中,盡管我可以在 console 上看到它們。 有任何想法嗎?
來自創建 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)
行的控制台日志:
實際 html img 元素:
當我如下手動更新源時,它可以工作,但我不明白為什么它不能自己獲取源。 任何想法將不勝感激。
嘗試在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
}
}
感謝您的貢獻,答案沒有用,但他們在此過程中幫助了我。 我今天解決了這個問題,並想在這里分享。
vis.js
。新添加的 promise 級別的代碼片段:
const blobToImage = (itemVideoURL,captureSecond) => {
return new Promise(async (resolve,reject)=> {
let cover = await GetVideoCover(itemVideoURL,captureSecond);
const url = URL.createObjectURL(cover)
let img = new Image()
img.onload = () => {
URL.revokeObjectURL(url)
resolve(img)
}
img.src = url
img.height = '75'
})
}
來自新 function 的代碼片段:
let divElement = document.createElement('div');
for (let i = 0; i < count * 3; i++) {
let newImage = await blobToImage(item.video_url,i+1)
divElement.appendChild(newImage)
}
return divElement;
它神奇地起作用了。
您應該使用單個圖像而不是多個圖像。
只需將所有圖像連接在一起:
let imgEle1 = document.querySelectorAll(".image")[0];
let imgEle2 = document.querySelectorAll(".image")[1];
let resEle = document.querySelector(".result");
var context = resEle.getContext("2d");
let BtnEle = document.querySelector(".Btn");
BtnEle.addEventListener("click", () => {
resEle.width = imgEle1.width;
resEle.height = imgEle1.height;
context.globalAlpha = 1.0;
context.drawImage(imgEle1, 0, 0);
context.globalAlpha = 0.5;
context.drawImage(imgEle2, 0, 0);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.