UNPKG

857 BJavaScriptView Raw
1'use strict';
2
3
4var ParserStream = require('../common').ParserStream;
5var str2arr = require('../common').str2arr;
6var sliceEq = require('../common').sliceEq;
7
8
9var SIG_PNG = str2arr('\x89PNG\r\n\x1a\n');
10var SIG_IHDR = str2arr('IHDR');
11
12
13module.exports = function () {
14 var parser = new ParserStream();
15
16 parser._bytes(24, function (data) {
17 parser._skipBytes(Infinity);
18
19 // check PNG signature
20 if (!sliceEq(data, 0, SIG_PNG)) {
21 parser.push(null);
22 return;
23 }
24
25 // check that first chunk is IHDR
26 if (!sliceEq(data, 12, SIG_IHDR)) {
27 parser.push(null);
28 return;
29 }
30
31 parser.push({
32 width: data.readUInt32BE(16),
33 height: data.readUInt32BE(20),
34 type: 'png',
35 mime: 'image/png',
36 wUnits: 'px',
37 hUnits: 'px'
38 });
39
40 parser.push(null);
41 });
42
43 return parser;
44};