From 4f598525e13cd0900711c4d585bcd823c4c2e8c4 Mon Sep 17 00:00:00 2001
From: Zhukj <3262118957>
Date: Mon, 20 Apr 2026 17:44:24 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BC=98=E5=8C=96=E5=9B=BE?=
=?UTF-8?q?=E7=89=87=E6=B8=85=E6=99=B0=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
js/script.js | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/js/script.js b/js/script.js
index aa4346b..3ce160b 100644
--- a/js/script.js
+++ b/js/script.js
@@ -1778,6 +1778,13 @@
document.body.appendChild(menu);
}
+ // 从 blob 显示预览
+ function showPreviewFromBlob(blob) {
+ console.log('预览图片大小:', (blob.size / 1024).toFixed(2), 'KB');
+ const dataUrl = URL.createObjectURL(blob);
+ showPreviewModal(dataUrl, blob);
+ }
+
// 显示预览
async function showPreview() {
const canvas = await generateCanvas();
@@ -1787,6 +1794,11 @@
const blob = await new Promise(resolve => canvas.toBlob(resolve, 'image/png', 1.0));
console.log('预览图片大小:', (blob.size / 1024).toFixed(2), 'KB');
const dataUrl = URL.createObjectURL(blob);
+ showPreviewModal(dataUrl, blob);
+ }
+
+ // 显示预览弹窗
+ function showPreviewModal(dataUrl, blob) {
const tipOverlay = document.createElement('div');
tipOverlay.id = 'previewTip';
@@ -1806,7 +1818,7 @@
`;
const tipText = document.createElement('p');
- tipText.textContent = '长按图片保存到相册';
+ tipText.innerHTML = '长按图片保存到相册
(预览已缩放,实际保存为高清原图)';
tipText.style.cssText = `
color: #fff;
font-size: 18px;
@@ -1846,7 +1858,7 @@
`;
saveBtn.onclick = async () => {
tipOverlay.remove();
- await saveImageToGallery(dataUrl);
+ await saveImageToGallery(dataUrl, blob);
};
const closeBtn = document.createElement('button');
@@ -1871,13 +1883,17 @@
}
// 保存图片到相册
- async function saveImageToGallery(dataUrl) {
+ async function saveImageToGallery(dataUrl, blob) {
const filename = '邀请函_' + Date.now() + '.png';
+ // 如果没有传入 blob,尝试从 window._lastExportBlob 获取
+ if (!blob && window._lastExportBlob) {
+ blob = window._lastExportBlob;
+ }
+
// 尝试使用 File System Access API (Android/Chrome)
if ('showSaveFilePicker' in window) {
try {
- const blob = await (await fetch(dataUrl)).blob();
const handle = await window.showSaveFilePicker({
suggestedName: filename,
types: [{
@@ -1898,7 +1914,6 @@
// 尝试使用 Web Share API (iOS Safari)
if (navigator.share && navigator.canShare) {
try {
- const blob = await (await fetch(dataUrl)).blob();
const file = new File([blob], filename, { type: 'image/png' });
if (navigator.canShare({ files: [file] })) {
@@ -2247,6 +2262,9 @@
console.log('导出图片大小:', (blob.size / 1024).toFixed(2), 'KB');
const dataUrl = URL.createObjectURL(blob);
const filename = '邀请函_' + Date.now() + '.png';
+
+ // 保存 blob 供后续使用
+ window._lastExportBlob = blob;
const tipOverlay = document.createElement('div');
tipOverlay.id = 'mobileSaveTip';
@@ -2342,7 +2360,7 @@
`;
previewBtn.onclick = () => {
tipOverlay.remove();
- showPreview();
+ showPreviewFromBlob(blob);
};
// 插入到标题后面