优化识别
This commit is contained in:
1 parent
7263a841cb
commit
5cb2e76471
9 files changed
+302
-66
No files matched your search
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user