Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80668 views
1
/**
2
* Copyright 2013 Facebook, Inc.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
function gif(buffer) {
18
return {
19
width: buffer.readUInt16LE(6),
20
height: buffer.readUInt16LE(8)
21
};
22
}
23
24
function png(buffer) {
25
return {
26
width: buffer.readUInt32BE(16),
27
height: buffer.readUInt32BE(20)
28
};
29
}
30
31
function jpeg(buffer) {
32
var len = buffer.length;
33
var offset = 2;
34
while (offset < len) {
35
var marker = buffer.readUInt16BE(offset);
36
offset += 2;
37
if (marker == 0xFFC0 || marker == 0xFFC2) {
38
return {
39
width: buffer.readUInt16BE(offset + 5),
40
height: buffer.readUInt16BE(offset + 3)
41
};
42
} else {
43
offset += buffer.readUInt16BE(offset);
44
}
45
}
46
return null;
47
}
48
49
function getImageSize(buffer) {
50
if (buffer[0] == 0xFF && buffer[1] == 0xD8) {
51
return jpeg(buffer);
52
} else if (buffer[0] == 0x47 && buffer[1] == 0x49 && buffer[2] == 0x46) {
53
return gif(buffer);
54
} else if (buffer[0] = 0x89 && buffer[1] == 0x50 && buffer[2] == 0x4E &&
55
buffer[3] == 0x47) {
56
return png(buffer);
57
} else {
58
return null;
59
}
60
}
61
62
module.exports = getImageSize;
63
getImageSize.gif = gif;
64
getImageSize.png = png;
65
getImageSize.jpeg = jpeg;
66
67