eagle预览spine插件

This commit is contained in:
tianmo committed 2026-09-08 18:42:08 +08:00
1 parent 3d72e88d88
commit 91815a355b
27 files changed
+70424

No files matched your search

+140
View File
@@ -0,0 +1,140 @@
const fs = require('fs');
var OSTYPE = {
ICON: '32×32',
'ICN#': '32×32',
'icm#': '16×12',
icm4: '16×12',
icm8: '16×12 ',
'ics#': '16×16',
ics4: '16×16',
ics8: '16×16',
is32: '16×16',
s8mk: '16×16',
icl4: '32×32',
icl8: '32×32',
il32: '32×32',
l8mk: '32×32',
'ich#': '48×48',
ich4: '48×48',
ich8: '48×48',
ih32: '48×48',
h8mk: '48×48',
it32: '128×128',
t8mk: '128×128',
icp4: '16x16',
icp5: '32x32',
icp6: '64x64',
ic07: '128x128',
ic08: '256×256',
ic09: '512×512',
ic10: '1024×1024',
ic11: '16x16@2x',
ic12: '32x32@2x',
ic13: '128x128@2x',
ic14: '256x256@2x ',
};
var Iconutil = (function () {
function Iconutil(buffer) {
var header = this.fetchHeader(buffer);
var pointer = header.data.length;
var images = [];
while (pointer < header.bytes) {
var _a = this.fetchImages(buffer.slice(pointer)), image = _a.image, data = _a.data, osType_1 = _a.osType;
Buffer.isBuffer(image) &&
images.push({
size: OSTYPE[osType_1],
image: image,
});
pointer += data.length;
}
this.images = images;
}
Iconutil.prototype.fetchHeader = function (buffer) {
var id = buffer.toString('ascii', 0, 4);
var bytes = buffer.readUInt32BE(4);
var data = Buffer.alloc(8);
data.write(id, 0, 4, 'ascii');
data.writeUInt32BE(bytes, 4);
return {
bytes: bytes,
data: data,
};
};
Iconutil.prototype.fetchImages = function (buffer) {
var osType = buffer.toString('ascii', 0, 4);
var bytes = buffer.readUInt32BE(4);
var image = buffer.slice(8, bytes);
var _buffer = Buffer.alloc(8);
_buffer.write(osType, 0, 4, 'ascii');
_buffer.writeUInt32BE(bytes, 4);
var data = Buffer.concat([_buffer, image]);
return {
data: data,
image: image,
osType: osType,
};
};
return Iconutil;
}());
async function icns2png (src, dist) {
return new Promise(async (resolve, reject) => {
try {
let buffer = await fs.promises.readFile(src);
let images = new Iconutil(buffer).images;
let max = 0;
let maxImage;
images.forEach(function (_a) {
if (_a && _a.image && _a.image.length > max) {
max = _a.image.length;
maxImage = _a.image;
}
});
if (maxImage) {
await fs.promises.writeFile(dist, maxImage);
return resolve();
}
return reject(new Error(`Can not parse the icns file.`));
}
catch (err) {
return reject(err);
}
});
}
async function icns2buffer (src) {
return new Promise(async (resolve, reject) => {
try {
let buffer = await fs.promises.readFile(src);
let images = new Iconutil(buffer).images;
let max = 0;
let maxImage;
images.forEach(function (_a) {
if (_a && _a.image && _a.image.length > max) {
max = _a.image.length;
maxImage = _a.image;
}
});
if (maxImage) {
return resolve(maxImage);
}
return reject(new Error(`Can not parse the icns file.`));
}
catch (err) {
return reject(err);
}
});
}
module.exports = {
icns2png: icns2png,
icns2buffer: icns2buffer
};