【问题标题】:Can't convert canvas to image after draw image on canvas with Reactjs使用 Reactjs 在画布上绘制图像后无法将画布转换为图像
【发布时间】:2020-05-14 13:17:34
【问题描述】:

我正在尝试在画布上绘制图像并使用我的 react 应用程序将其转换为图像,但是当我单击下载按钮时出现此错误

`无法在“HTMLCanvasElement”上执行“toDataURL”:可能无法导出受污染的画布。` 

这是我的代码 绘图功能

const printLocation = _ => {
    let canvas = canvasRef.current;
    let context = canvas.getContext("2d");
    let img = new Image();
    img.src = "https://kilausenja.com/wp-content/uploads/2019/04/18-02-08-17-29-50-859_deco.jpg";
    context.drawImage(img, 0, 0, 100, 100);
  };

画布转图片功能

  const canvasToImg = _ => {
    let canvas = canvasRef.current;
    let tagA = document.createElement("a");
    document.body.appendChild(tagA);
    tagA.href = canvas.toDataURL();
    tagA.download = "canvas-image.png";
    tagA.click();
    document.body.removeChild(tagA);
  };

and here is my codesandbox example

【问题讨论】:

    标签: javascript reactjs canvas html5-canvas


    【解决方案1】:

    这里的人,我克隆你的沙箱并对函数 printLocation 进行一些更改

    edited version

      img.crossOrigin = "anonymous";
      img.src = "https://2.bp.blogspot.com/-VTIlinKHDHE/WXiij8jFF-I/AAAAAAAADvs/r2yZ6H6QomUfR_kNBW0F-638aCj98XZvACLcBGAs/s1600/hasil%2Bscan%2B1%2B-%2Bcara%2Bscan%2Btanda%2Btangan.jpg";
    

    记住图片的来源,因为没有任何服务器允许你进行跨域请求

    【讨论】:

    • 谢谢你拯救了我的一天:D,我忘了用驼峰式添加标签 crossorigin
    • 请将代码也包含在答案正文中 - 这在 SO 上是预期的。谢谢!
    • 非常感谢!您也拯救了我的一天
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    相关资源
    最近更新 更多