From 930195bb6a02fe72176d26875a3943fc01d533d1 Mon Sep 17 00:00:00 2001 From: Stefal Date: Thu, 17 Oct 2024 10:46:16 +0200 Subject: [PATCH 1/6] Add support of GPSHPositioningError --- .../imaging/formats/tiff/constants/GpsTagConstants.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java index 7ab5d5fee..184e8d2aa 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java @@ -148,13 +148,15 @@ public final class GpsTagConstants { public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1; + public static final TagInfoRational GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f, TiffDirectoryType.EXIF_DIRECTORY_GPS); + public static final List ALL_GPS_TAGS = Collections.unmodifiableList(Arrays.asList(GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF, GPS_TAG_GPS_LATITUDE, GPS_TAG_GPS_LONGITUDE_REF, GPS_TAG_GPS_LONGITUDE, GPS_TAG_GPS_ALTITUDE_REF, GPS_TAG_GPS_ALTITUDE, GPS_TAG_GPS_TIME_STAMP, GPS_TAG_GPS_SATELLITES, GPS_TAG_GPS_STATUS, GPS_TAG_GPS_MEASURE_MODE, GPS_TAG_GPS_DOP, GPS_TAG_GPS_SPEED_REF, GPS_TAG_GPS_SPEED, GPS_TAG_GPS_TRACK_REF, GPS_TAG_GPS_TRACK, GPS_TAG_GPS_IMG_DIRECTION_REF, GPS_TAG_GPS_IMG_DIRECTION, GPS_TAG_GPS_MAP_DATUM, GPS_TAG_GPS_DEST_LATITUDE_REF, GPS_TAG_GPS_DEST_LATITUDE, GPS_TAG_GPS_DEST_LONGITUDE_REF, GPS_TAG_GPS_DEST_LONGITUDE, GPS_TAG_GPS_DEST_BEARING_REF, GPS_TAG_GPS_DEST_BEARING, GPS_TAG_GPS_DEST_DISTANCE_REF, GPS_TAG_GPS_DEST_DISTANCE, GPS_TAG_GPS_PROCESSING_METHOD, GPS_TAG_GPS_AREA_INFORMATION, - GPS_TAG_GPS_DATE_STAMP, GPS_TAG_GPS_DIFFERENTIAL)); + GPS_TAG_GPS_DATE_STAMP, GPS_TAG_GPS_DIFFERENTIAL, GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR)); public static byte[] gpsVersion() { return GPS_VERSION.clone(); From 720ab15bb54aff346d5478f8ffce3c705aeabcea Mon Sep 17 00:00:00 2001 From: Stefal Date: Thu, 17 Oct 2024 20:42:12 +0200 Subject: [PATCH 2/6] Add javadoc --- .../imaging/formats/tiff/constants/GpsTagConstants.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java index 184e8d2aa..b689bc18e 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java @@ -147,7 +147,11 @@ public final class GpsTagConstants { public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_NO_CORRECTION = 0; public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1; - + + /** + * Horizontal positioning errors in meters + * @since 1.0.0-alpha6 + */ public static final TagInfoRational GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f, TiffDirectoryType.EXIF_DIRECTORY_GPS); public static final List ALL_GPS_TAGS = Collections.unmodifiableList(Arrays.asList(GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF, From f9c515e8bb9d2ad51fe262d605e23bfb286cc0cf Mon Sep 17 00:00:00 2001 From: Stefal Date: Thu, 17 Oct 2024 22:36:09 +0200 Subject: [PATCH 3/6] Add test for GPSHPositioningError --- .../imaging/formats/jpeg/exif/GpsTest.java | 18 ++++++++++++++++++ .../images/jpeg/exif/2024-04-30_G012.JPG | Bin 0 -> 46906 bytes 2 files changed, 18 insertions(+) create mode 100644 src/test/resources/images/jpeg/exif/2024-04-30_G012.JPG diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java index ea724befe..1ae078259 100644 --- a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java +++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java @@ -17,13 +17,19 @@ package org.apache.commons.imaging.formats.jpeg.exif; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.io.File; import java.util.stream.Stream; import org.apache.commons.imaging.Imaging; +import org.apache.commons.imaging.common.RationalNumber; import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata; +import org.apache.commons.imaging.formats.tiff.TiffField; import org.apache.commons.imaging.formats.tiff.TiffImageMetadata; +import org.apache.commons.imaging.formats.tiff.constants.GpsTagConstants; import org.apache.commons.imaging.internal.Debug; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -63,4 +69,16 @@ public void test(final File imageFile) throws Exception { Debug.debug(); } + + /** + * @throws Exception if it cannot open the images. + */ + @Test + public void testReadMetadata() throws Exception { + final File imageFile = new File(GpsTest.class.getResource("/images/jpeg/exif/2024-04-30_G012.JPG").getFile()); + final JpegImageMetadata jpegMetadata = (JpegImageMetadata) Imaging.getMetadata(imageFile); + final TiffField gpsHPosErrorField = jpegMetadata.findExifValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR); + final RationalNumber gpsHPosError = (RationalNumber) gpsHPosErrorField.getValue(); + assertEquals(0.014, gpsHPosError.doubleValue()); + } } diff --git a/src/test/resources/images/jpeg/exif/2024-04-30_G012.JPG b/src/test/resources/images/jpeg/exif/2024-04-30_G012.JPG new file mode 100644 index 0000000000000000000000000000000000000000..e4b87184555d67b7b49dbfe5d13ce73d861f41da GIT binary patch literal 46906 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 Bx;X#< literal 0 HcmV?d00001 From f327da0e7c10763e7154832d491b78f2947c6d3b Mon Sep 17 00:00:00 2001 From: Stefal Date: Thu, 17 Oct 2024 22:46:53 +0200 Subject: [PATCH 4/6] Shorter constant name --- .../imaging/formats/tiff/constants/GpsTagConstants.java | 4 ++-- .../org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java index b689bc18e..fc8ab9819 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java @@ -152,7 +152,7 @@ public final class GpsTagConstants { * Horizontal positioning errors in meters * @since 1.0.0-alpha6 */ - public static final TagInfoRational GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f, TiffDirectoryType.EXIF_DIRECTORY_GPS); + public static final TagInfoRational GPS_TAG_GPS_HOR_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f, TiffDirectoryType.EXIF_DIRECTORY_GPS); public static final List ALL_GPS_TAGS = Collections.unmodifiableList(Arrays.asList(GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF, GPS_TAG_GPS_LATITUDE, GPS_TAG_GPS_LONGITUDE_REF, GPS_TAG_GPS_LONGITUDE, GPS_TAG_GPS_ALTITUDE_REF, GPS_TAG_GPS_ALTITUDE, GPS_TAG_GPS_TIME_STAMP, @@ -160,7 +160,7 @@ public final class GpsTagConstants { GPS_TAG_GPS_TRACK_REF, GPS_TAG_GPS_TRACK, GPS_TAG_GPS_IMG_DIRECTION_REF, GPS_TAG_GPS_IMG_DIRECTION, GPS_TAG_GPS_MAP_DATUM, GPS_TAG_GPS_DEST_LATITUDE_REF, GPS_TAG_GPS_DEST_LATITUDE, GPS_TAG_GPS_DEST_LONGITUDE_REF, GPS_TAG_GPS_DEST_LONGITUDE, GPS_TAG_GPS_DEST_BEARING_REF, GPS_TAG_GPS_DEST_BEARING, GPS_TAG_GPS_DEST_DISTANCE_REF, GPS_TAG_GPS_DEST_DISTANCE, GPS_TAG_GPS_PROCESSING_METHOD, GPS_TAG_GPS_AREA_INFORMATION, - GPS_TAG_GPS_DATE_STAMP, GPS_TAG_GPS_DIFFERENTIAL, GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR)); + GPS_TAG_GPS_DATE_STAMP, GPS_TAG_GPS_DIFFERENTIAL, GPS_TAG_GPS_HOR_POSITIONING_ERROR)); public static byte[] gpsVersion() { return GPS_VERSION.clone(); diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java index 1ae078259..e0fae16e2 100644 --- a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java +++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/GpsTest.java @@ -77,7 +77,7 @@ public void test(final File imageFile) throws Exception { public void testReadMetadata() throws Exception { final File imageFile = new File(GpsTest.class.getResource("/images/jpeg/exif/2024-04-30_G012.JPG").getFile()); final JpegImageMetadata jpegMetadata = (JpegImageMetadata) Imaging.getMetadata(imageFile); - final TiffField gpsHPosErrorField = jpegMetadata.findExifValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_HORIZONTAL_POSITIONING_ERROR); + final TiffField gpsHPosErrorField = jpegMetadata.findExifValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_HOR_POSITIONING_ERROR); final RationalNumber gpsHPosError = (RationalNumber) gpsHPosErrorField.getValue(); assertEquals(0.014, gpsHPosError.doubleValue()); } From 6b2df610c0fcff481d3dfceba7aacaec14d7f172 Mon Sep 17 00:00:00 2001 From: Stefal Date: Sat, 19 Oct 2024 15:20:13 +0200 Subject: [PATCH 5/6] Fix CheckStyle errors --- .../imaging/formats/tiff/constants/GpsTagConstants.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java index fc8ab9819..b7f40b7b3 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java @@ -147,12 +147,13 @@ public final class GpsTagConstants { public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_NO_CORRECTION = 0; public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1; - + /** * Horizontal positioning errors in meters * @since 1.0.0-alpha6 */ - public static final TagInfoRational GPS_TAG_GPS_HOR_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f, TiffDirectoryType.EXIF_DIRECTORY_GPS); + public static final TagInfoRational GPS_TAG_GPS_HOR_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f, + TiffDirectoryType.EXIF_DIRECTORY_GPS); public static final List ALL_GPS_TAGS = Collections.unmodifiableList(Arrays.asList(GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF, GPS_TAG_GPS_LATITUDE, GPS_TAG_GPS_LONGITUDE_REF, GPS_TAG_GPS_LONGITUDE, GPS_TAG_GPS_ALTITUDE_REF, GPS_TAG_GPS_ALTITUDE, GPS_TAG_GPS_TIME_STAMP, From 96dd0ea74347423b833200e7aeff94e94c9a1b05 Mon Sep 17 00:00:00 2001 From: Gary Gregory Date: Sat, 26 Oct 2024 15:03:48 -0400 Subject: [PATCH 6/6] Javadoc: Sentence should end in a period --- .../imaging/formats/tiff/constants/GpsTagConstants.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java index b7f40b7b3..a3b4c4609 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java @@ -149,7 +149,8 @@ public final class GpsTagConstants { public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1; /** - * Horizontal positioning errors in meters + * Horizontal positioning errors in meters. + * * @since 1.0.0-alpha6 */ public static final TagInfoRational GPS_TAG_GPS_HOR_POSITIONING_ERROR = new TagInfoRational("GPSHPositioningError", 0x001f,