blob - 如何使用 blobs 或 dataURL 作为 360photos 的 a-frame 或 a-sky 的 src
问题描述
我正在编写一个简单的脚本来在 VR 中显示 360 度图像,同时动态更改图像。目前,下一个图像源由一个简单的超时设置(在 4 个本地 .jpg 中),但我计划从远程相机获取图像,然后每 x 秒更新一次天空视图。
我能够更改 a-sky src 属性并设置不同的 n.jpg。但我无法将 blob 设置为源。
现在我只是将本地 jpg 转换为 blob,但下一步是要求远程相机 api 拥有 jpg 二进制文件,并将其转换为 blob url。无论如何,没有显示新图像。它似乎仅在您将静态内容作为 src 时才有效。
我能怎么做?谢谢
这里部分来源:
setInterval(updatePanImg, 2000);
var seq = 1;
function updatePanImg() {
let blob_src;
if (seq >= 4) seq = 1; else seq++;
blob_src = seq + ".jpg";
console.log('blob_src update ' + blob_src);
//1-working (/imgname.jpg)
//document.getElementById('asky').setAttribute("material", "src", blob_src);
//2-not working (/blob:......)
return fetch(blob_src)
.then((response)=> {
return response.blob();
})
.then(blob => {
let blob_src_url = URL.createObjectURL(blob);
document.getElementById('asky').setAttribute("material", "src", blob_src_url);
return blob_src_url;
});
}
<script src="aframe-master.min.js"></script>
<a-scene>
<a-sky id="asky" material="opacity:1; src: 4.jpg" rotation="0 -130 0" foo></a-sky>
</a-scene>
解决方案
试着把它包起来url()
,也许?只要 blob 以类似数据开头
document.getElementById('asky').setAttribute("material", "src", `url(data:image/png;base64,${blob_src_url})`);
data:image/png;base64,
如果还没有格式,请添加或任何格式。
推荐阅读
- oracle-apex - Oracle APEX - 有没有办法查明是否正在使用动态操作或流程
- constructor - 为什么有一些构造函数的“键”参数,它是做什么用的?
- java - 凯撒密码 java 编码问题
- sql-server - For 循环容器 SSIS 分配表达式
- android - androidx和支持依赖导致multidex错误
- usb - 请求描述符时 USB 集线器停止
- javascript - 使用 javascript/ajax 拖放后如何更新数据库?
- curl - 使用 cURL 下载需要令牌的文件时出错
- python - 使用 Python 删除文件夹中 2 或 3 个文件中的每一个
- google-sheets - 根据 Google 电子表格中单元格中的值显示消息框