From f55f4116d5c067968adcd4339139d1f7d65b5c07 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Wed, 6 Dec 2023 23:31:31 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20canvas=20=E8=B6=85=E8=BF=87=2080?= =?UTF-8?q?MB=20=E6=97=B6=E4=B8=8D=E4=BA=88=E4=BF=9D=E5=AD=98=EF=BC=8C?= =?UTF-8?q?=E8=B6=85=E8=BF=87=2020MB=20=E6=97=B6=E7=BB=99=E4=BA=88?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/TGShare.ts | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/utils/TGShare.ts b/src/utils/TGShare.ts index 7e936331..d226c3c2 100644 --- a/src/utils/TGShare.ts +++ b/src/utils/TGShare.ts @@ -1,12 +1,14 @@ /** - * @file utils TGShare.ts + * @file utils/TGShare.ts * @description 生成分享截图并保存到本地 - * @since Beta v0.3.6 + * @since Beta v0.3.7 */ import { dialog, fs, http, path } from "@tauri-apps/api"; import html2canvas from "html2canvas"; +import { bytesToSize } from "./toolFunc"; +import showConfirm from "../components/func/confirm"; import showSnackbar from "../components/func/snackbar"; /** @@ -75,7 +77,7 @@ function getShareImgBgColor(): string { /** * @description 生成分享截图 - * @since Beta v0.3.6 + * @since Beta v0.3.7 * @param {string} fileName - 文件名 * @param {HTMLElement} element - 元素 * @param {number} scale - 缩放比例 @@ -104,10 +106,36 @@ export async function generateShareImg( dpi: 350, }; const canvasData = await html2canvas(element, opts); + const size = canvasData.width * canvasData.height * 4; + const sizeStr = bytesToSize(size); + if (size > 80000000) { + showSnackbar({ + text: `图像大小为 ${sizeStr},过大,无法保存`, + color: "warn", + timeout: 3000, + }); + return; + } + if (size > 20000000) { + const sizeStr = bytesToSize(size); + const saveFile = await showConfirm({ + title: "图像过大", + text: `图像大小为 ${sizeStr},是否保存到文件?`, + }); + if (!saveFile) { + showSnackbar({ + color: "cancel", + text: "已取消", + }); + } else { + await saveCanvasImg(canvasData, fileName); + } + return; + } try { await copyToClipboard(canvasData); showSnackbar({ - text: `已将 ${fileName} 复制到剪贴板`, + text: `已将 ${fileName} 复制到剪贴板,大小为 ${sizeStr}`, }); } catch (e) { await saveCanvasImg(canvasData, fileName); @@ -116,7 +144,7 @@ export async function generateShareImg( /** * @description 复制到剪贴板 - * @since Beta v0.3.2 + * @since Beta v0.3.7 * @param {HTMLCanvasElement} canvas - canvas元素 * @returns {Promise} 无返回值 */