eagle预览spine插件
This commit is contained in:
1 parent
3d72e88d88
commit
91815a355b
27 files changed
+70424
No files matched your search
+140
@@ -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
|
||||
};
|
||||
Reference in new issue
Block a user