From d77820f03aa0c9222bf62ad0fe9502174f07e9fe Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 18 Jan 2015 11:59:04 -0800 Subject: [PATCH] Added exif latitude and longitude. --- src/Transit/File.php | 30 ++++++++----------- tests/Transit/FileTest.php | 12 ++++++-- .../Transformer/Image/ExifTransformerTest.php | 8 +++-- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/Transit/File.php b/src/Transit/File.php index 93d9f34..60c5e07 100644 --- a/src/Transit/File.php +++ b/src/Transit/File.php @@ -182,8 +182,8 @@ public function exif(array $fields = array()) { 'date' => 'DateTime', 'iso' => 'ISOSpeedRatings', 'focal' => 'FocalLength', - 'latitude' => 'GPSLatitude', - 'longitude' => 'GPSLongitude' + 'latitude' => 'GPSLatitude', + 'longitude' => 'GPSLongitude' ); if ($file->supportsExif()) { @@ -192,11 +192,16 @@ public function exif(array $fields = array()) { $value = ''; if (!empty($data[$find])) { - if ($key == 'latitude' || $key == 'longitude'){ - $value = $file->dmstodec($data[$find][0], $data[$find][1], $data[$find][2]); - } else { - $value = $data[$find]; - } + // Convert DMS (degrees, minutes, seconds) to decimals + if ($key === 'latitude' || $key === 'longitude'){ + $deg = $data[$find][0]; + $min = $data[$find][1]; + $sec = $data[$find][2]; + $value = $deg + ((($min * 60) + $sec) / 3600); + + } else { + $value = $data[$find]; + } } $exif[$key] = $value; @@ -597,17 +602,6 @@ public function toArray() { public function toString() { return $this->path(); } - - /** - * Converts DMS ( Degrees / minutes / seconds ) - * to decimal format longitude / latitude - * @return float - */ - function dmstodec($deg,$min,$sec) { - - return $deg+((($min*60)+($sec))/3600); - - } /** * Cache the results of a callback. diff --git a/tests/Transit/FileTest.php b/tests/Transit/FileTest.php index 9cf980d..9fd0681 100644 --- a/tests/Transit/FileTest.php +++ b/tests/Transit/FileTest.php @@ -102,7 +102,9 @@ public function testExif() { 'fnumber' => '45/10', 'date' => '2013:06:07 11:32:22', 'iso' => 100, - 'focal' => '100/10' + 'focal' => '100/10', + 'latitude' => '', + 'longitude' => '' ), $file->exif()); $file = new File(TEMP_DIR . '/magic-mime-verify.js'); @@ -115,7 +117,9 @@ public function testExif() { 'fnumber' => '', 'date' => '', 'iso' => '', - 'focal' => '' + 'focal' => '', + 'latitude' => '', + 'longitude' => '' ), $file->exif()); } @@ -327,7 +331,9 @@ public function testToArray() { 'exif.fnumber' => '', 'exif.date' => '', 'exif.iso' => '', - 'exif.focal' => '' + 'exif.focal' => '', + 'exif.latitude' => '', + 'exif.longitude' => '' ), $this->object->toArray()); } diff --git a/tests/Transit/Transformer/Image/ExifTransformerTest.php b/tests/Transit/Transformer/Image/ExifTransformerTest.php index fa8ffb9..0c57ae5 100644 --- a/tests/Transit/Transformer/Image/ExifTransformerTest.php +++ b/tests/Transit/Transformer/Image/ExifTransformerTest.php @@ -24,7 +24,9 @@ public function testLandscape() { 'fnumber' => '', 'date' => '', 'iso' => '', - 'focal' => '' + 'focal' => '', + 'latitude' => '', + 'longitude' => '' ); // 1 @@ -104,7 +106,9 @@ public function testPortrait() { 'fnumber' => '', 'date' => '', 'iso' => '', - 'focal' => '' + 'focal' => '', + 'latitude' => '', + 'longitude' => '' ); // 1