simplify.js
1.67 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
var exif = require('./exif');
var date = require('./date');
var degreeTags = [{
section: exif.GPSIFD,
type: 0x0002,
name: 'GPSLatitude',
refType: 0x0001,
refName: 'GPSLatitudeRef',
posVal: 'N'
},
{
section: exif.GPSIFD,
type: 0x0004,
name: 'GPSLongitude',
refType: 0x0003,
refName: 'GPSLongitudeRef',
posVal: 'E'
}];
var dateTags = [{
section: exif.SubIFD,
type: 0x0132,
name: 'ModifyDate'
},
{
section: exif.SubIFD,
type: 0x9003,
name: 'DateTimeOriginal'
},
{
section: exif.SubIFD,
type: 0x9004,
name: 'CreateDate'
},
{
section: exif.SubIFD,
type: 0x0132,
name : 'ModifyDate',
}];
module.exports = {
castDegreeValues: function(getTagValue, setTagValue) {
degreeTags.forEach(function(t) {
var degreeVal = getTagValue(t);
if(degreeVal) {
var degreeRef = getTagValue({section: t.section, type: t.refType, name: t.refName});
var degreeNumRef = degreeRef === t.posVal ? 1 : -1;
var degree = (degreeVal[0] + (degreeVal[1] / 60) + (degreeVal[2] / 3600)) * degreeNumRef;
setTagValue(t, degree);
}
});
},
castDateValues: function(getTagValue, setTagValue) {
dateTags.forEach(function(t) {
var dateStrVal = getTagValue(t);
if(dateStrVal) {
//some easy checks to determine two common date formats
var timestamp = date.parseExifDate(dateStrVal);
if(typeof timestamp !== 'undefined') {
setTagValue(t, timestamp);
}
}
});
},
simplifyValue: function(values, format) {
if(Array.isArray(values)) {
values = values.map(function(value) {
if(format === 10 || format === 5) {
return value[0] / value[1];
}
return value;
});
if(values.length === 1) {
values = values[0];
}
}
return values;
}
};