export jpeg

This commit is contained in:
1ilit 2023-09-19 15:48:27 +03:00
parent 92343dd645
commit 7f015692c5

View File

@ -19,7 +19,7 @@ import {
Image, Image,
Modal, Modal,
} from "@douyinfe/semi-ui"; } from "@douyinfe/semi-ui";
import { toPng } from "html-to-image"; import { toPng, toJpeg } from "html-to-image";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
export default function ControlPanel() { export default function ControlPanel() {
@ -30,6 +30,7 @@ export default function ControlPanel() {
const [filename, setFilename] = useState( const [filename, setFilename] = useState(
`diagram_${new Date().toISOString()}` `diagram_${new Date().toISOString()}`
); );
const [extension, setExtension] = useState("");
const menu = { const menu = {
File: { File: {
@ -69,12 +70,23 @@ export default function ControlPanel() {
setDataUrl(dataUrl); setDataUrl(dataUrl);
}); });
setVisible(true); setVisible(true);
setExtension("png");
},
},
{
".jpeg": () => {
toJpeg(document.getElementById("canvas"), { quality: 0.95 }).then(
function (dataUrl) {
setDataUrl(dataUrl);
}
);
setVisible(true);
setExtension("jpeg");
}, },
}, },
{ ".jpg": () => {} },
{ ".xml": () => {} }, { ".xml": () => {} },
{ ".svg": () => {} }, { ".svg": () => {} },
{ ".xml": () => {} }, { ".pdf": () => {} },
], ],
function: () => {}, function: () => {},
}, },
@ -474,8 +486,11 @@ export default function ControlPanel() {
<Modal <Modal
title="Export diagram" title="Export diagram"
visible={visible} visible={visible}
onOk={() => saveAs(dataUrl, `${filename}.png`)} onOk={() => saveAs(dataUrl, `${filename}.${extension}`)}
afterClose={() => setFilename(`diagram_${new Date().toISOString()}`)} afterClose={() => {
setFilename(`diagram_${new Date().toISOString()}`);
setDataUrl("");
}}
onCancel={() => setVisible(false)} onCancel={() => setVisible(false)}
centered centered
closeOnEsc={true} closeOnEsc={true}
@ -488,14 +503,17 @@ export default function ControlPanel() {
labelPosition="left" labelPosition="left"
labelAlign="right" labelAlign="right"
onChange={(value) => { onChange={(value) => {
console.log(value.values); setFilename((prev) =>
setFilename(value.values["filename"]); value.values["filename"] !== undefined
? value.values["filename"]
: prev
);
}} }}
> >
<Form.Input <Form.Input
field="filename" field="filename"
label="Filename" label="Filename"
suffix={<div className="p-2">.png</div>} suffix={<div className="p-2">{`.${extension}`}</div>}
initValue={filename} initValue={filename}
/> />
</Form> </Form>