itu*_*tuy 2 javascript canvas web-worker
Webworkers 可以通过 获取常规图像XMLHttpRequest
,对吧?那么工作人员如何将这些图像绘制到 OffscreenCanvas 上呢?大概想用XMLHttp.responseType = 'blob'
?
另一种方法是设置src
图像元素的 ,然后将该元素传输给工作人员,但我的工作人员总是拒绝此类图像。
谢谢
ImageBitmap API就是为了这个目的(以及其他目的)而存在的。
注意:此演示目前仅在 Chrome 上运行...
const offcanvas = canvas.transferControlToOffscreen();
const worker = new Worker(getWorkerURL());
worker.onmessage = e => console.log(e.data);
worker.postMessage(offcanvas, [offcanvas]);
function getWorkerURL() {
return URL.createObjectURL(
new Blob([
worker_script.textContent
])
);
}
Run Code Online (Sandbox Code Playgroud)
<canvas id="canvas" height="450"></canvas>
<script id="worker_script" type="ws">
onmessage = async (evt) => {
try {
const canvas = evt.data;
const ctx = canvas.getContext('2d');
if(!ctx) {
postMessage('unsupported browser');
return;
}
const imgblob = await fetch('https://upload.wikimedia.org/wikipedia/commons/5/55/John_William_Waterhouse_A_Mermaid.jpg')
.then(r => r.blob());
const img = await createImageBitmap(imgblob);
ctx.drawImage(img, 0,0, canvas.width, canvas.height);
}
catch(e) {
postMessage('unsupported browser');
throw e;
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5200 次 |
最近记录: |