imagescript
Version:
zero-dependency javascript image manipulation
25 lines (22 loc) • 1.29 kB
JavaScript
const { view } = require('../../utils/mem.js');
const formats = {
ttf: { type: 'font', format: 'ttf' },
otf: { type: 'font', format: 'otf' },
svg: { type: 'image', format: 'svg' },
png: { type: 'image', format: 'png' },
gif: { type: 'image', format: 'gif' },
jpeg: { type: 'image', format: 'jpeg' },
tiff: { type: 'image', format: 'tiff' },
};
function buffer(init) {
const u8 = view(init);
if (0 === u8.length) return;
if (0xff === u8[0] && 0xd8 === u8[1] && 0xff === u8[2]) return formats.jpeg;
if (0x4d === u8[0] && 0x4d === u8[1] && 0x00 === u8[2] && 0x2a === u8[3]) return formats.tiff;
if (0x49 === u8[0] && 0x49 === u8[1] && 0x2a === u8[2] && 0x00 === u8[3]) return formats.tiff;
if (0x00 === u8[0] && 0x01 === u8[1] && 0x00 === u8[2] && 0x00 === u8[3] && 0x00 === u8[4]) return formats.ttf;
if (0x4F === u8[0] && 0x54 === u8[1] && 0x54 === u8[2] && 0x4F === u8[3] && 0x00 === u8[4]) return formats.otf;
if (0x47 === u8[0] && 0x49 === u8[1] && 0x46 === u8[2] && 0x38 === u8[3] && 0x61 === u8[5] && (0x37 === u8[4] || 0x39 === u8[4])) return formats.gif;
if (0x89 === u8[0] && 0x50 === u8[1] && 0x4e === u8[2] && 0x47 === u8[3] && 0x0d === u8[4] && 0x0a === u8[5] && 0x1a === u8[6] && 0x0a === u8[7]) return formats.png;
}
module.exports = { buffer };