From 7f015692c5fbd340a829b4bc911276868be306d8 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:48:27 +0300 Subject: [PATCH] export jpeg --- src/components/control_panel.jsx | 34 ++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/components/control_panel.jsx b/src/components/control_panel.jsx index 6fe2bb5..9b009dc 100644 --- a/src/components/control_panel.jsx +++ b/src/components/control_panel.jsx @@ -19,7 +19,7 @@ import { Image, Modal, } from "@douyinfe/semi-ui"; -import { toPng } from "html-to-image"; +import { toPng, toJpeg } from "html-to-image"; import { saveAs } from "file-saver"; export default function ControlPanel() { @@ -30,6 +30,7 @@ export default function ControlPanel() { const [filename, setFilename] = useState( `diagram_${new Date().toISOString()}` ); + const [extension, setExtension] = useState(""); const menu = { File: { @@ -69,12 +70,23 @@ export default function ControlPanel() { setDataUrl(dataUrl); }); setVisible(true); + setExtension("png"); + }, + }, + { + ".jpeg": () => { + toJpeg(document.getElementById("canvas"), { quality: 0.95 }).then( + function (dataUrl) { + setDataUrl(dataUrl); + } + ); + setVisible(true); + setExtension("jpeg"); }, }, - { ".jpg": () => {} }, { ".xml": () => {} }, { ".svg": () => {} }, - { ".xml": () => {} }, + { ".pdf": () => {} }, ], function: () => {}, }, @@ -474,8 +486,11 @@ export default function ControlPanel() { saveAs(dataUrl, `${filename}.png`)} - afterClose={() => setFilename(`diagram_${new Date().toISOString()}`)} + onOk={() => saveAs(dataUrl, `${filename}.${extension}`)} + afterClose={() => { + setFilename(`diagram_${new Date().toISOString()}`); + setDataUrl(""); + }} onCancel={() => setVisible(false)} centered closeOnEsc={true} @@ -488,14 +503,17 @@ export default function ControlPanel() { labelPosition="left" labelAlign="right" onChange={(value) => { - console.log(value.values); - setFilename(value.values["filename"]); + setFilename((prev) => + value.values["filename"] !== undefined + ? value.values["filename"] + : prev + ); }} > .png} + suffix={
{`.${extension}`}
} initValue={filename} />