reactjs - 在 react-canvas-draw 中绘制到图像库 64
问题描述
我想将我在 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>
);
}
解决方案
使用函数 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>
);
}
推荐阅读
- javascript - 同一元素上的 CSS 冲突变换属性
- symfony5 - 为整个包设置 Symfony 翻译域
- javascript - 防止 Django 模板表单中的重定向
- python - tf.data:函数尝试转换为 numpy 数组失败?
- grep - 字数和输出
- c# - C# - 有一个列表
并且想要检索使用该接口而不使用 foreach 循环的不同对象 - python - 如何从列中删除字母和引号
- python - 我的 python 程序退出而不是循环
- javascript - setTimeout 一天中的特定时间,然后停止直到下一个特定时间
- javascript - 删除除某些以外的所有字段