You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.7 KiB
79 lines
1.7 KiB
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; |
|
} |
|
};
|
|
|