优化图片和显示问题

This commit is contained in:
24kycj
2026-09-22 17:39:48 +08:00
parent 0f26163ad7
commit 381a48b5c5
12 changed files with 54 additions and 13 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 32 KiB

+1 -1
View File
@@ -1,4 +1,4 @@
(function () {
'use strict';
window.SOON_APP_VERSION = 'ce76bb8';
window.SOON_APP_VERSION = '0f26163';
})();
+6 -6
View File
@@ -742,18 +742,18 @@ function soonDesign2LockBgObject(bgObj) {
});
}
/** 打开旧文件:去掉残留模板层,用户背景独占 canvas[0] 并贴齐卡框 */
/** 打开旧文件:把 canvas[0] 的用户背景图贴齐卡框并锁定。
* 设计前提:保存 .soon 时 canvas[0] == 用户背景图(set_bg 已把它放到 0 位)。
* 之前的实现会 fabricCanvas.remove(all[0]) 并把 all[1](前景)当成新 userBg,导致重打开后
* 用户背景图丢失、前景元素被错误地缩放并锁定到卡框大小。本版本不再删除 all[0],
* 改为直接把已有的 all[0] 当成用户背景图处理。 */
function soonDesign2NormalizeUserBg(fabricCanvas, metaList) {
if (!soonDesign2IsUserBgMeta(metaList) || !fabricCanvas) return null;
var all = fabricCanvas.getObjects().filter(function (o) { return !o.isGuideLine; });
if (!all.length) return null;
var frame = soonDesign2FrameOrigin(fabricCanvas);
var userBg = all[0];
if (all.length > 1) {
fabricCanvas.remove(all[0]);
userBg = fabricCanvas.getObjects().filter(function (o) { return !o.isGuideLine; })[0];
}
if (!userBg) return null;
var frame = soonDesign2FrameOrigin(fabricCanvas);
soonDesign2SnapImageToCardFrame(userBg, fabricCanvas, frame);
soonDesign2ApplyUserBgAsCanvas0(userBg, fabricCanvas, null);
soonDesign2LockBgObject(userBg);
+7
View File
@@ -1442,6 +1442,13 @@ window.openFile = function open(file, jAlready) {
if (typeof window.soonReportOpenLoadError === 'function') window.soonReportOpenLoadError('模板/文件加载失败');
return;
}
// 防御性:j.b 缺失时给一个空画布占位(避免 canvas2.loadFromJSON 报 undefined
if (!j.b || typeof j.b !== 'object' || !Array.isArray(j.b.objects)) {
if (typeof console !== 'undefined' && console.warn) {
console.warn('[design2.openFile] j.b 缺失,自动以空背面回退。文件:', file);
}
j.b = { version: '4.6.0', objects: [], hoverCursor: 'move' };
}
function runOpen() {
if (!background_image) {
if (typeof window.soonReportOpenLoadError === 'function') window.soonReportOpenLoadError('模板/文件加载失败');
+4 -1
View File
@@ -789,7 +789,10 @@ $('#down_obj').click(function () {
$('#set_bg').click(function () {
let obj = canvas.getActiveObject()
let idx = getIndex(obj)
var oldBg = background_image1 || background_image
// 旧背景:取当前画布对应的占位背景图(正面->background_image1,背面->background_image2),
// 背面场景下 background_image 已被 #back_side 切换为 background_image2。
var oldBg = (canvas === canvas2) ? background_image2 : background_image1
if (!oldBg) oldBg = background_image
var frame = typeof window.soonDesign2FrameOrigin === 'function'
? window.soonDesign2FrameOrigin(canvas)
: { left: oldBg.left, top: oldBg.top }
+7
View File
@@ -423,6 +423,13 @@
typeof window.soonBindFileMeta === 'function') {
window.soonBindFileMeta(cacheKey, { name: hit.meta.name });
}
// 兜底:design2(背面文件)若缓存里 j.b 缺失,主动补一个空背面结构,
// 避免 design2.canvas2.loadFromJSON(undefined) 抛错或吃掉整段加载。
if ((hit.json.soonType === 2 || hit.json.backBlackPic || (hit.json.bo && hit.json.bo.length) || (hit.json.f && hit.json.b === undefined && typeof hit.json.b === 'undefined'))) {
if (!hit.json.b || typeof hit.json.b !== 'object' || !Array.isArray(hit.json.b.objects)) {
hit.json.b = { version: '4.6.0', objects: [], hoverCursor: 'move' };
}
}
return Promise.resolve(hit.json);
}