2424 */
2525class Exiftool implements MapperInterface
2626{
27- const APERTURE = 'Aperture ' ;
28- const APPROXIMATEFOCUSDISTANCE = 'ApproximateFocusDistance ' ;
29- const ARTIST = 'Artist ' ;
30- const CAPTION = 'Caption ' ;
31- const CAPTIONABSTRACT = 'Caption-Abstract ' ;
32- const COLORSPACE = 'ColorSpace ' ;
33- const COPYRIGHT = 'Copyright ' ;
34- const CREATEDATE = 'CreateDate ' ;
35- const CREDIT = 'Credit ' ;
36- const EXPOSURETIME = 'ExposureTime ' ;
37- const FILESIZE = 'FileSize ' ;
38- const FOCALLENGTH = 'FocalLength ' ;
39- const HEADLINE = 'Headline ' ;
40- const IMAGEHEIGHT = 'ImageHeight ' ;
41- const IMAGEWIDTH = 'ImageWidth ' ;
42- const ISO = 'ISO ' ;
43- const JOBTITLE = 'JobTitle ' ;
44- const KEYWORDS = 'Keywords ' ;
45- const MIMETYPE = 'MIMEType ' ;
46- const MODEL = 'Model ' ;
47- const ORIENTATION = 'Orientation ' ;
48- const SOFTWARE = 'Software ' ;
49- const SOURCE = 'Source ' ;
50- const TITLE = 'Title ' ;
51- const XRESOLUTION = 'XResolution ' ;
52- const YRESOLUTION = 'YResolution ' ;
53- const GPSLATITUDE = 'GPSLatitude ' ;
54- const GPSLONGITUDE = 'GPSLongitude ' ;
27+ const APERTURE = 'Composite: Aperture ' ;
28+ const APPROXIMATEFOCUSDISTANCE = 'XMP: ApproximateFocusDistance ' ;
29+ const ARTIST = 'EXIF: Artist ' ;
30+ const CAPTION = 'XMP: Caption ' ;
31+ const CAPTIONABSTRACT = 'IPTC: Caption-Abstract ' ;
32+ const COLORSPACE = 'EXIF: ColorSpace ' ;
33+ const COPYRIGHT = 'EXIF: Copyright ' ;
34+ const CREATEDATE = 'EXIF: CreateDate ' ;
35+ const CREDIT = 'IPTC: Credit ' ;
36+ const EXPOSURETIME = 'EXIF: ExposureTime ' ;
37+ const FILESIZE = 'File: FileSize ' ;
38+ const FOCALLENGTH = 'EXIF: FocalLength ' ;
39+ const HEADLINE = 'IPTC: Headline ' ;
40+ const IMAGEHEIGHT = 'File: ImageHeight ' ;
41+ const IMAGEWIDTH = 'File: ImageWidth ' ;
42+ const ISO = 'EXIF: ISO ' ;
43+ const JOBTITLE = 'IPTC:By-lineTitle ' ;
44+ const KEYWORDS = 'IPTC: Keywords ' ;
45+ const MIMETYPE = 'File: MIMEType ' ;
46+ const MODEL = 'EXIF: Model ' ;
47+ const ORIENTATION = 'EXIF: Orientation ' ;
48+ const SOFTWARE = 'EXIF: Software ' ;
49+ const SOURCE = 'IPTC: Source ' ;
50+ const TITLE = 'IPTC:ObjectName ' ;
51+ const XRESOLUTION = 'EXIF: XResolution ' ;
52+ const YRESOLUTION = 'EXIF: YResolution ' ;
53+ const GPSLATITUDE = 'EXIF: GPSLatitude ' ;
54+ const GPSLONGITUDE = 'EXIF: GPSLongitude ' ;
5555
5656 /**
5757 * Maps the ExifTool fields to the fields of
@@ -153,8 +153,10 @@ public function mapRawData(array $data)
153153 }
154154 break ;
155155 case self ::FOCALLENGTH :
156- $ focalLengthParts = explode (' ' , $ value );
157- $ value = (int ) reset ($ focalLengthParts );
156+ if (!$ this ->numeric || strpos ($ value , ' ' ) !== false ) {
157+ $ focalLengthParts = explode (' ' , $ value );
158+ $ value = reset ($ focalLengthParts );
159+ }
158160 break ;
159161 case self ::GPSLATITUDE :
160162 $ gpsData ['lat ' ] = $ this ->extractGPSCoordinates ($ value );
@@ -170,8 +172,8 @@ public function mapRawData(array $data)
170172
171173 // add GPS coordinates, if available
172174 if (count ($ gpsData ) === 2 && $ gpsData ['lat ' ] !== false && $ gpsData ['lon ' ] !== false ) {
173- $ latitudeRef = empty ($ data ['GPSLatitudeRef ' ][0 ]) ? 'N ' : $ data ['GPSLatitudeRef ' ][0 ];
174- $ longitudeRef = empty ($ data ['GPSLongitudeRef ' ][0 ]) ? 'E ' : $ data ['GPSLongitudeRef ' ][0 ];
175+ $ latitudeRef = empty ($ data ['EXIF: GPSLatitudeRef ' ][0 ]) ? 'N ' : $ data ['EXIF: GPSLatitudeRef ' ][0 ];
176+ $ longitudeRef = empty ($ data ['EXIF: GPSLongitudeRef ' ][0 ]) ? 'E ' : $ data ['EXIF: GPSLongitudeRef ' ][0 ];
175177
176178 $ gpsLocation = sprintf (
177179 '%s,%s ' ,
0 commit comments