优化识别

This commit is contained in:
tianmo committed 2026-09-09 00:27:25 +08:00
1 parent 7263a841cb
commit 5cb2e76471
9 files changed
+302 -66

No files matched your search

+29
View File
@@ -171,6 +171,34 @@
const path = require('path');
const fs = require('fs');
const utils = require('../js/spine-utils.js');
const spineBadge = require('../js/spine-badge.js');
let spineBadgeImagePromise = null;
function loadSpineBadgeImage() {
if (spineBadgeImagePromise) return spineBadgeImagePromise;
spineBadgeImagePromise = new Promise((resolve, reject) => {
try {
const image = new Image();
image.onload = () => resolve(image);
image.onerror = () => reject(new Error('Spine badge 加载失败'));
image.src = spineBadge.dataUrl();
} catch (e) {
reject(e);
}
});
return spineBadgeImagePromise;
}
async function drawSpineBadge(targetCtx, width, height) {
try {
const badge = await loadSpineBadgeImage();
const badgeSize = Math.max(44, Math.round(Math.min(width, height) * 0.15));
const margin = Math.max(10, Math.round(badgeSize * 0.2));
targetCtx.drawImage(badge, width - badgeSize - margin, height - badgeSize - margin, badgeSize, badgeSize);
} catch (e) {
log('绘制 Spine badge 失败: ' + ((e && e.message) || String(e)));
}
}
// 简易日志(写入插件目录 thumbnails.log,便于诊断)
function log(msg) {
@@ -429,6 +457,7 @@
offRenderer.draw(skeleton);
octx.restore();
}
await drawSpineBadge(octx, size, size);
// Eagle 的 *_thumbnail.png 通常实际保存 WebP;优先使用 WebP 显著减小体积。
let out = off.toDataURL('image/webp', 0.9);