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