【问题标题】:Draw in react-canvas-draw to image base 64在 react-canvas-draw 中绘制到图像库 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>
  );
}

【问题讨论】:

    标签: reactjs html5-canvas base64


    【解决方案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} alt="exported drawing" />
          <CanvasDraw
            lazyRadius={0}
            brushRadius={2}
            canvasWidth={"339px"}
            canvasHeight={"486px"}
            ref={canvasRef}
          />
        </div>
      );
    }

    【讨论】:

    • 感谢您的宝贵时间,致以最诚挚的问候。
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 2013-06-19
    • 1970-01-01
    • 2015-09-16
    • 2019-06-07
    • 2013-11-26
    • 2017-08-14
    • 1970-01-01
    相关资源
    最近更新 更多