obsidian社区插件
自定义 Excalidraw 脚本 - 将选中元素为 PNG 或者 SVG 格式文件到本地
插件ID:%E8%87%AA%E5%AE%9A%E4%B9%89excalidraw%E8%84%9A%E6%9C%AC-%E5%B0%86%E9%80%89%E4%B8%AD%E5%85%83%E7%B4%A0%E4%B8%BApng%E6%88%96%E8%80%85svg%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0
%E8%87%AA%E5%AE%9A%E4%B9%89excalidraw%E8%84%9A%E6%9C%AC-%E5%B0%86%E9%80%89%E4%B8%AD%E5%85%83%E7%B4%A0%E4%B8%BApng%E6%88%96%E8%80%85svg%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0
%E8%87%AA%E5%AE%9A%E4%B9%89excalidraw%E8%84%9A%E6%9C%AC %E5%B0%86%E9%80%89%E4%B8%AD%E5%85%83%E7%B4%A0%E4%B8%BApng%E6%88%96%E8%80%85svg%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0:将选中的元素保存为 PNG 或者 SVG 格式本地文件,相当于网页版 Excalidraw 的导出仅选中图片
自定义 Excalidraw 脚本 - 将选中元素为 PNG 或者 SVG 格式文件到本地
将选中的元素保存为 PNG 或者 SVG 格式本地文件,相当于网页版 Excalidraw 的导出仅选中图片 (PS:网页版的快捷键是 Ctrl + Shift + E
)。
/*
* @Author: 熊猫别熬夜
* @Date: 2024-04-01 21:32:26
* @Last Modified by: 熊猫别熬夜
* @Last Modified time: 2024-04-01 21:35:11
*/
// 获取笔记的基本路径
const basename = app.workspace.getActiveFile().basename;
const date = window.moment().format("YYYY-MM-DD_HHmmss");
const fileName = `${basename.replace("\.excalidraw", "")}-${date}`;
const choices = ["保存为PNG格式", "保存为SVG格式"];
const choice = await utils.suggester(choices, choices, "请选择要保存的格式");
if (!choice) return;
if (choice === choices[0]) {
ea.targetView.svg(ea.targetView.getScene(true), undefined, true).then(svg => {
let base64 = `data:image/svg+xml;base64,${btoa(
unescape(encodeURIComponent(svg.outerHTML.replaceAll(" ", " "))),
)}`;
// 将SVG转换为PNG
const img = new Image();
img.src = base64;
img.onload = function () {
const canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// 将PNG数据导出到本地文件
canvas.toBlob(function (blob) {
saveBlobToFile(blob, `${fileName}.png`);
});
};
});
} else if (choice === choices[1]) {
// 保存为SVG文件
ea.targetView.svg(ea.targetView.getScene(true), undefined, true).then(svg => {
// 将SVG数据导出到本地文件
const blob = new Blob([svg.outerHTML], { type: 'image/svg+xml' });
saveBlobToFile(blob, `${fileName}.svg`);
});
}
// 将Blob对象保存为文件
function saveBlobToFile(blob, fileName) {
const a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
const url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
}
讨论
若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。