GT2/Ejectable/node_modules/exif-parser/lib/simplify.js

80 lines
1.7 KiB
JavaScript

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