首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在web-worker中将图像位图/图像绘制为OffScreenCanvas

在web-worker中将图像位图/图像绘制为OffScreenCanvas
EN

Stack Overflow用户
提问于 2020-03-20 13:50:17
回答 1查看 1.5K关注 0票数 1

我有一个vue.js应用程序,我在其中设置了vue-workers/web-workers,以便在用户上传几张图像后在后台执行一些图像处理(缩放/裁剪)。

我决定使用ImageBitMpas & OffScreenCanvas,因为在web workers中不支持画布和图像对象。我可以使用CreateImageBitMap()方法从我的图像文件创建ImageBitMap。它成功地返回了promise,然后解析为ImageBitMap。我可以将其打印到我的控制台,并看到ImageBitMap已创建!我添加了一张打印到下面控制台的ImageBitmap的图片。

ImageBitmap is created and error is thrown

代码语言:javascript
复制
var loadingImage = new Image();
loadingImage.onload = () => {

    console.log(createImageBitmap(loadingImage)); // I can see the ImageBitmap logged to console
    const canvas = new OffscreenCanvas(100,100);
    const ctx = canvas.getContext('2d');

    Promise.all([
        createImageBitmaps(loadingImage);
    ]).then(function(result){
        console.log("printing promise resolved");
        console.log(result);
        ctx.drawImage(result,0,0,200,200);  /// <-- this is where error is thrown
    })  

    // other code here .... 

};
loadingImage.src = base64Src; 

问:我遇到问题的地方是,当我将这个ImageBitMap传递给OffScreenCanvas.draw()方法时,我得到一个错误,说“无法在OffscreenCanvasRenderer上执行drawImage ...”在下图中打印ImageBitMap后,您可以在控制台中看到确切的错误。

是否有人成功地将图像绘制到vue-worker/web-worker中的OffScreenCanvas?任何可以工作的代码的例子都会非常感谢!

另外,根据我的研究,似乎只有Chrome才支持createImageBitMap()?!有没有其他方法代替使用ImageBitMap来绘制到OffScreenCanvas,可以在chrome和Safari上工作?

EN

回答 1

Stack Overflow用户

发布于 2020-12-05 15:40:22

你试过使用ImageBitmapRenderingContext吗?

代码语言:javascript
复制
canvas.getContext('bitmaprenderer').transferFromImageBitmap(bitmap);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60769179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档