shift73k/assets_old/node_modules/image-size/lib/types/png.js

36 lines
911 B
JavaScript

'use strict';
var pngSignature = 'PNG\r\n\x1a\n';
var pngImageHeaderChunkName = 'IHDR';
var pngFriedChunkName = 'CgBI'; // Used to detect "fried" png's: http://www.jongware.com/pngdefry.html
function isPNG (buffer) {
if (pngSignature === buffer.toString('ascii', 1, 8)) {
var chunkName = buffer.toString('ascii', 12, 16);
if (chunkName === pngFriedChunkName) {
chunkName = buffer.toString('ascii', 28, 32);
}
if (chunkName !== pngImageHeaderChunkName) {
throw new TypeError('invalid png');
}
return true;
}
}
function calculate (buffer) {
if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) {
return {
'width': buffer.readUInt32BE(32),
'height': buffer.readUInt32BE(36)
};
}
return {
'width': buffer.readUInt32BE(16),
'height': buffer.readUInt32BE(20)
};
}
module.exports = {
'detect': isPNG,
'calculate': calculate
};