在 react-canvas-draw 中绘制到图像库 64

Posted

技术标签:

【中文标题】在 react-canvas-draw 中绘制到图像库 64【英文标题】:Draw in react-canvas-draw to image base 64 【发布时间】:2021-11-05 21:54:46 【问题描述】:

我会将我在 react-canvas-draw 中的绘图传递给 base 64 中的图像, 我想到了:

var imgData = canvas.toDataURL();

但由于它是一个库(React-Canvas-Draw,https://www.npmjs.com/package/react-canvas-draw),我正在使用我不太了解如何实现它。

该库具有 getSaveData 方法,但它仅用于恢复其组件中的数据。

getSaveData() 将绘图的保存数据作为字符串化对象返回

不胜感激,非常感谢!

CODESANDBOX:https://codesandbox.io/s/jovial-architecture-o4tvz?file=/src/App.js

import "./styles.css";
import  useRef  from 'react'
import CanvasDraw from "react-canvas-draw";

export default function App() 

const canvasRef = useRef(null)

const Draw = canvasRef.current;  



 const handleChange =()=> 

  const data = Draw.getSaveData();
  console.log('Draw', Draw)
  console.log('data', data)
  
 


  return (
    <div className="App">
      <h1>React-Canvas-Draw</h1>
      <h2>Save draw to image base 64!</h2>

      <CanvasDraw 
       ref= canvasRef 
       onChange= handleChange 
      />

    </div>
  );


【问题讨论】:

【参考方案1】:

使用 toDataURL() 函数返回 Base64 数据,可以保存并作为 src 传递给 img 标签(导出的绘图),如下例所示:

CODESANDBOX:https://codesandbox.io/s/competent-nova-7lbbx?file=/src/App.js:0-959

import  useRef, useState  from "react";
import CanvasDraw from "react-canvas-draw";

export default function App() 
  const canvasRef = useRef(null);
  const [drawing, setDrawing] = useState();

  const handleExport = () => 
    const base64 = canvasRef.current.canvasContainer.childNodes[1].toDataURL();
    setDrawing(base64);
  ;

  return (
    <div className="App">
      <h1>React-Canvas-Draw</h1>
      <h2>Save draw to image base 64!</h2>
      <hr />
      <button
        type="button"
        style= backgroundColor: "#0A71F1", color: "white" 
        onClick=handleExport
      >
        Export Drawing
      </button>
      <br />
      <img src=drawing  />
      <CanvasDraw
        lazyRadius=0
        brushRadius=2
        canvasWidth="339px"
        canvasHeight="486px"
        ref=canvasRef
      />
    </div>
  );

【讨论】:

感谢您的宝贵时间,致以最诚挚的问候。

以上是关于在 react-canvas-draw 中绘制到图像库 64的主要内容,如果未能解决你的问题,请参考以下文章

CAD交互绘制矩形框(com接口)

在 animationDidStop 中,动画的地址与我添加到图层的动画地址不同?

PS绘制飘逸彩色丝带教程

在seaborn tsplot中将图例移到图外

记一个上传图片到图床利器插件的实现(Mac版 开源)

Typora配置图片自动上传到图床