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;
| }
| };
|
|