simplify.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. var exif = require('./exif');
  2. var date = require('./date');
  3. var degreeTags = [{
  4. section: exif.GPSIFD,
  5. type: 0x0002,
  6. name: 'GPSLatitude',
  7. refType: 0x0001,
  8. refName: 'GPSLatitudeRef',
  9. posVal: 'N'
  10. },
  11. {
  12. section: exif.GPSIFD,
  13. type: 0x0004,
  14. name: 'GPSLongitude',
  15. refType: 0x0003,
  16. refName: 'GPSLongitudeRef',
  17. posVal: 'E'
  18. }];
  19. var dateTags = [{
  20. section: exif.SubIFD,
  21. type: 0x0132,
  22. name: 'ModifyDate'
  23. },
  24. {
  25. section: exif.SubIFD,
  26. type: 0x9003,
  27. name: 'DateTimeOriginal'
  28. },
  29. {
  30. section: exif.SubIFD,
  31. type: 0x9004,
  32. name: 'CreateDate'
  33. },
  34. {
  35. section: exif.SubIFD,
  36. type: 0x0132,
  37. name : 'ModifyDate',
  38. }];
  39. module.exports = {
  40. castDegreeValues: function(getTagValue, setTagValue) {
  41. degreeTags.forEach(function(t) {
  42. var degreeVal = getTagValue(t);
  43. if(degreeVal) {
  44. var degreeRef = getTagValue({section: t.section, type: t.refType, name: t.refName});
  45. var degreeNumRef = degreeRef === t.posVal ? 1 : -1;
  46. var degree = (degreeVal[0] + (degreeVal[1] / 60) + (degreeVal[2] / 3600)) * degreeNumRef;
  47. setTagValue(t, degree);
  48. }
  49. });
  50. },
  51. castDateValues: function(getTagValue, setTagValue) {
  52. dateTags.forEach(function(t) {
  53. var dateStrVal = getTagValue(t);
  54. if(dateStrVal) {
  55. //some easy checks to determine two common date formats
  56. var timestamp = date.parseExifDate(dateStrVal);
  57. if(typeof timestamp !== 'undefined') {
  58. setTagValue(t, timestamp);
  59. }
  60. }
  61. });
  62. },
  63. simplifyValue: function(values, format) {
  64. if(Array.isArray(values)) {
  65. values = values.map(function(value) {
  66. if(format === 10 || format === 5) {
  67. return value[0] / value[1];
  68. }
  69. return value;
  70. });
  71. if(values.length === 1) {
  72. values = values[0];
  73. }
  74. }
  75. return values;
  76. }
  77. };