Index: /trunk/src/org/openstreetmap/josm/data/gpx/GpxImageEntry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/gpx/GpxImageEntry.java	(revision 18251)
+++ /trunk/src/org/openstreetmap/josm/data/gpx/GpxImageEntry.java	(revision 18252)
@@ -694,4 +694,22 @@
         }
 
+        IptcDirectory dirIptc = metadata.getFirstDirectoryOfType(IptcDirectory.class);
+        if (dirIptc != null) {
+            ifNotNull(ExifReader.readCaption(dirIptc), this::setIptcCaption);
+            ifNotNull(ExifReader.readHeadline(dirIptc), this::setIptcHeadline);
+            ifNotNull(ExifReader.readKeywords(dirIptc), this::setIptcKeywords);
+            ifNotNull(ExifReader.readObjectName(dirIptc), this::setIptcObjectName);
+        }
+
+        for (XmpDirectory xmpDirectory : metadata.getDirectoriesOfType(XmpDirectory.class)) {
+            Map<String, String> properties = xmpDirectory.getXmpProperties();
+            final String projectionType = "GPano:ProjectionType";
+            if (properties.containsKey(projectionType)) {
+                Stream.of(Projections.values()).filter(p -> p.name().equalsIgnoreCase(properties.get(projectionType)))
+                        .findFirst().ifPresent(projection -> this.cameraProjection = projection);
+                break;
+            }
+        }
+
         // Changed to silently cope with no time info in exif. One case
         // of person having time that couldn't be parsed, but valid GPS info
@@ -756,22 +774,4 @@
 
         ifNotNull(dirGps.getGpsDate(), d -> setExifGpsTime(d.toInstant()));
-
-        IptcDirectory dirIptc = metadata.getFirstDirectoryOfType(IptcDirectory.class);
-        if (dirIptc != null) {
-            ifNotNull(ExifReader.readCaption(dirIptc), this::setIptcCaption);
-            ifNotNull(ExifReader.readHeadline(dirIptc), this::setIptcHeadline);
-            ifNotNull(ExifReader.readKeywords(dirIptc), this::setIptcKeywords);
-            ifNotNull(ExifReader.readObjectName(dirIptc), this::setIptcObjectName);
-        }
-
-        for (XmpDirectory xmpDirectory : metadata.getDirectoriesOfType(XmpDirectory.class)) {
-            Map<String, String> properties = xmpDirectory.getXmpProperties();
-            final String projectionType = "GPano:ProjectionType";
-            if (properties.containsKey(projectionType)) {
-                Stream.of(Projections.values()).filter(p -> p.name().equalsIgnoreCase(properties.get(projectionType)))
-                        .findFirst().ifPresent(projection -> this.cameraProjection = projection);
-                break;
-            }
-        }
     }
 
