工作代码:
var canvas = document.createElement('canvas');
var offscreen = canvas.transferControlToOffscreen();
Run Code Online (Sandbox Code Playgroud)
使用时.getContext():
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var offscreen = canvas.transferControlToOffscreen();
// InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
Run Code Online (Sandbox Code Playgroud)
进一步的尝试也不起作用:
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
delete ctx;
var offscreen = canvas.transferControlToOffscreen();
Run Code Online (Sandbox Code Playgroud)
甚至是这样:
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
ctx.reset();
delete ctx;
var offscreen = canvas.transferControlToOffscreen();
Run Code Online (Sandbox Code Playgroud)
没有什么改变,webgl而不是2d
那么,我怎样才能得到画有东西的画布的屏幕外,然后将其发送给工作人员呢?或者我必须使用类似的东西getImageData()并将结果与全新画布的屏幕外一起发送,然后让工作人员复制 …
HTMLCanvasElement有toDataURL(),但OffscreenCanvas没有。真是个惊喜。
好的,那么我怎样才能让它toDataURL()与Worker-s 一起使用?我有一个准备好的画布(完全绘制),可以将它发送到Worker. 但是我能从那里做什么?
我唯一的解决方案是手动执行所有操作以创建image/png. 所以我从 2010 年开始找到这个页面。(我不确定这是否是我需要的。)而且它提供了这个代码,从那里它生成一个 PNG 并使其成为 base64。
我的最后一个问题:
1 - 是否有一些合理的方法可以toDataURL()从Worker, 或
2 - 是否有任何图书馆或专为这项工作设计的东西,或
3 -使用的所有功能HTMLCanvasElement和OffscreenCanvas应该怎么下面的代码进行调整,以取代toDataURL()?
这是我链接到的代码中的两个函数。(它们对我来说真的很复杂,我几乎一无所知getDump())
// output a PNG string
this.getDump = function() {
// compute adler32 of output pixels + row filter bytes
var BASE = 65521; /* largest prime smaller than 65536 …Run Code Online (Sandbox Code Playgroud) Webworkers 可以通过 获取常规图像XMLHttpRequest,对吧?那么工作人员如何将这些图像绘制到 OffscreenCanvas 上呢?大概想用XMLHttp.responseType = 'blob'?
另一种方法是设置src图像元素的 ,然后将该元素传输给工作人员,但我的工作人员总是拒绝此类图像。
谢谢