'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
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;
    }
};