-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgetImageType.js
More file actions
42 lines (39 loc) · 844 Bytes
/
Copy pathgetImageType.js
File metadata and controls
42 lines (39 loc) · 844 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function getImageType(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = function (event) {
const arr = (new Uint8Array(event.target.result)).subarray(0, 4);
let header = "";
for (let i = 0; i < arr.length; i++) {
header += arr[i].toString(16);
}
let type;
switch (header) {
case "89504e47":
type = "image/png";
break;
case "47494638":
type = "image/gif";
break;
case "ffd8ffe0":
case "ffd8ffe1":
case "ffd8ffe2":
case "ffd8ffe3":
case "ffd8ffe8":
type = "image/jpeg";
break;
case "424d":
type = "image/bmp";
break;
default:
type = "unknown";
break;
}
resolve(type);
};
reader.onerror = function (error) {
reject(error);
};
reader.readAsArrayBuffer(file);
});
}