Javascript 是';位图渲染器';Chrome中的屏幕外画布渲染上下文不是有效值?

Javascript 是';位图渲染器';Chrome中的屏幕外画布渲染上下文不是有效值?,javascript,google-chrome,canvas,Javascript,Google Chrome,Canvas,在屏幕外画布上绘制位图图像时,Chrome控制台在我身上引发了一个错误: 未能对“OffscreenCanvas”执行“getContext”:提供的值“bitmaprenderer”不是OffscreenRenderingContextType类型的有效枚举值 该问题在工作环境和窗口环境中都会发生: var-img=新图像(63177); img.src=”https://cdn.sstatic.net/Img/unified/sprites.svg"; img.onload=\u=>{ 创

在屏幕外画布上绘制位图图像时,Chrome控制台在我身上引发了一个错误:

未能对“OffscreenCanvas”执行“getContext”:提供的值“bitmaprenderer”不是OffscreenRenderingContextType类型的有效枚举值

该问题在工作环境和窗口环境中都会发生:

var-img=新图像(63177);
img.src=”https://cdn.sstatic.net/Img/unified/sprites.svg";
img.onload=\u=>{
创建图像位图(img)。然后(位图=>{
var canvas=新的OffscreenCanvas(位图.width、位图.height);
getContext('bitmaprenderer');
}).catch(e=>console.error(e.message));
};是,OffscreenCanvas仍不提供,仅提供webgl[-2](FF和Chrome)和2D(当前仅Chrome)

请注意,将此ImageBitmapRenderingContext从OffscreenCanvas中提供没有什么意义,因为此上下文通常仅用于显示ImageBitmap对象。因此,这意味着关联的画布应该是可见的

如果您想将其用于诸如能够将其绘制到其他上下文的某种用途,则可以直接将ImageBitmap传递给或

因此,我能看到的唯一一个使用案例是从Worker内部使用
OffscreenCanvas.convertToBlob()
方法,以便将ImageBitmap转换为BLob。我可以理解,devs确实将其设置为低优先级,而您无论如何都可以通过其他方式来执行相同的操作(尽管它可能需要更多的内存来实现)

还要注意的是,在您的情况下,由于您处于主线程而不是工作线程中,因此您绝对不需要OffscreenCanvas,只需这样做即可

var img=newimage();
img.crossOrigin='匿名';
img.src=”https://upload.wikimedia.org/wikipedia/commons/a/a4/Fiore_con_petali_arancioni_SVG.svg";
img.onload=\u=>{
创建图像位图(img)
。然后(位图=>{
const canvas=Object.assign(document.createElement('canvas'){
宽度:bitmap.width,
高度:位图.height
});
const ctx=canvas.getContext('bitmaprenderer');
ctx.transferFromImageBitmap(位图);
返回新承诺((res,rej)=>{
canvas.toBlob(blob=>{
如果(!blob)rej('error');
res(blob);
});
});
})
.然后(blob=>{
控制台日志(blob);
result.src=URL.createObjectURL(blob);
})
.catch(e=>console.error(e.message));
};
PNG:
是,OffscreenCanvas仍无法提供,只有webgl[-2](FF和Chrome)和2D(目前仅Chrome)可用

请注意,将此ImageBitmapRenderingContext从OffscreenCanvas中提供没有什么意义,因为此上下文通常仅用于显示ImageBitmap对象。因此,这意味着关联的画布应该是可见的

如果您想将其用于诸如能够将其绘制到其他上下文的某种用途,则可以直接将ImageBitmap传递给或

因此,我能看到的唯一一个使用案例是从Worker内部使用
OffscreenCanvas.convertToBlob()
方法,以便将ImageBitmap转换为BLob。我可以理解,devs确实将其设置为低优先级,而您无论如何都可以通过其他方式来执行相同的操作(尽管它可能需要更多的内存来实现)

还要注意的是,在您的情况下,由于您处于主线程而不是工作线程中,因此您绝对不需要OffscreenCanvas,只需这样做即可

var img=newimage();
img.crossOrigin='匿名';
img.src=”https://upload.wikimedia.org/wikipedia/commons/a/a4/Fiore_con_petali_arancioni_SVG.svg";
img.onload=\u=>{
创建图像位图(img)
。然后(位图=>{
const canvas=Object.assign(document.createElement('canvas'){
宽度:bitmap.width,
高度:位图.height
});
const ctx=canvas.getContext('bitmaprenderer');
ctx.transferFromImageBitmap(位图);
返回新承诺((res,rej)=>{
canvas.toBlob(blob=>{
如果(!blob)rej('error');
res(blob);
});
});
})
.然后(blob=>{
控制台日志(blob);
result.src=URL.createObjectURL(blob);
})
.catch(e=>console.error(e.message));
};
PNG: