Package org.openstreetmap.josm.tools
Class ExifReader
- java.lang.Object
-
- org.openstreetmap.josm.tools.ExifReader
-
public final class ExifReader extends java.lang.Object
Read out EXIF information from a JPEG file- Since:
- 99
-
-
Constructor Summary
Constructors Modifier Constructor Description private
ExifReader()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.awt.geom.AffineTransform
getRestoreOrientationTransform(int orientation, int width, int height)
Returns a Transform that fixes the image orientation.static boolean
orientationNeedsCorrection(int orientation)
Check, if the given orientation requires any correction to the image.static boolean
orientationSwitchesDimensions(int orientation)
Check, if the given orientation switches width and height of the image.private static double
readAxis(com.drew.metadata.exif.GpsDirectory dirGps, int gpsTag, int gpsTagRef, char cRef)
static java.lang.String
readCaption(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the caption of the given IPTC directory.static java.lang.Double
readDirection(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the direction of the given EXIF GPS directory.static java.lang.Double
readDirection(java.io.File filename)
Returns the direction of the given JPEG file.static java.lang.Double
readElevation(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the elevation of the given EXIF GPS directory.static java.lang.Double
readElevation(java.io.File filename)
Returns the elevation of the given JPEG file.static java.lang.String
readHeadline(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the headline of the given IPTC directory.static java.time.Instant
readInstant(com.drew.metadata.Metadata metadata)
Returns the date/time from the given JPEG file.static java.time.Instant
readInstant(java.io.File filename)
Returns the date/time from the given JPEG file.static java.util.List<java.lang.String>
readKeywords(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the keywords of the given IPTC directory.static LatLon
readLatLon(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the geolocation of the given EXIF GPS directory.static LatLon
readLatLon(java.io.File filename)
Returns the geolocation of the given JPEG file.static java.lang.String
readObjectName(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the object name of the given IPTC directory.static java.lang.Integer
readOrientation(java.io.File filename)
Returns the image orientation of the given JPEG file.static java.lang.Double
readSpeed(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the speed of the given EXIF GPS directory.static java.lang.Double
readSpeed(java.io.File filename)
Returns the speed of the given JPEG file.
-
-
-
Constructor Detail
-
ExifReader
private ExifReader()
-
-
Method Detail
-
readInstant
public static java.time.Instant readInstant(java.io.File filename)
Returns the date/time from the given JPEG file.- Parameters:
filename
- The JPEG file to read- Returns:
- The date/time read in the EXIF section, or
null
if not found
-
readInstant
public static java.time.Instant readInstant(com.drew.metadata.Metadata metadata)
Returns the date/time from the given JPEG file.- Parameters:
metadata
- The EXIF metadata- Returns:
- The date/time read in the EXIF section, or
null
if not found
-
readOrientation
public static java.lang.Integer readOrientation(java.io.File filename)
Returns the image orientation of the given JPEG file.- Parameters:
filename
- The JPEG file to read- Returns:
- The image orientation as an
int
. Default value is 1. Possible values are listed in EXIF spec as follows:- The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.
- The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.
- The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.
- The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side.
- The 0th row is the visual left-hand side of the image, and the 0th column is the visual top.
- The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.
- The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom.
- The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
- See Also:
- http://www.impulseadventure.com/photo/exif-orientation.html, http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto
-
readLatLon
public static LatLon readLatLon(java.io.File filename)
Returns the geolocation of the given JPEG file.- Parameters:
filename
- The JPEG file to read- Returns:
- The lat/lon read in the EXIF section, or
null
if not found - Since:
- 6209
-
readLatLon
public static LatLon readLatLon(com.drew.metadata.exif.GpsDirectory dirGps) throws com.drew.metadata.MetadataException
Returns the geolocation of the given EXIF GPS directory.- Parameters:
dirGps
- The EXIF GPS directory- Returns:
- The lat/lon read in the EXIF section, or
null
ifdirGps
is null - Throws:
com.drew.metadata.MetadataException
- if invalid metadata is given- Since:
- 6209
-
readDirection
public static java.lang.Double readDirection(java.io.File filename)
Returns the direction of the given JPEG file.- Parameters:
filename
- The JPEG file to read- Returns:
- The direction of the image when it was captures (in degrees between 0.0 and 359.99),
or
null
if not found - Since:
- 6209
-
readDirection
public static java.lang.Double readDirection(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the direction of the given EXIF GPS directory.- Parameters:
dirGps
- The EXIF GPS directory- Returns:
- The direction of the image when it was captured (in degrees between 0.0 and 359.99),
or
null
if missing or ifdirGps
is null - Since:
- 6209
-
readAxis
private static double readAxis(com.drew.metadata.exif.GpsDirectory dirGps, int gpsTag, int gpsTagRef, char cRef) throws com.drew.metadata.MetadataException
- Throws:
com.drew.metadata.MetadataException
-
readSpeed
public static java.lang.Double readSpeed(java.io.File filename)
Returns the speed of the given JPEG file.- Parameters:
filename
- The JPEG file to read- Returns:
- The speed of the camera when the image was captured (in km/h),
or
null
if not found - Since:
- 11745
-
readSpeed
public static java.lang.Double readSpeed(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the speed of the given EXIF GPS directory.- Parameters:
dirGps
- The EXIF GPS directory- Returns:
- The speed of the camera when the image was captured (in km/h),
or
null
if missing or ifdirGps
is null - Since:
- 11745
-
readElevation
public static java.lang.Double readElevation(java.io.File filename)
Returns the elevation of the given JPEG file.- Parameters:
filename
- The JPEG file to read- Returns:
- The elevation of the camera when the image was captured (in m),
or
null
if not found - Since:
- 11745
-
readElevation
public static java.lang.Double readElevation(com.drew.metadata.exif.GpsDirectory dirGps)
Returns the elevation of the given EXIF GPS directory.- Parameters:
dirGps
- The EXIF GPS directory- Returns:
- The elevation of the camera when the image was captured (in m),
or
null
if missing or ifdirGps
is null - Since:
- 11745
-
readCaption
public static java.lang.String readCaption(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the caption of the given IPTC directory.- Parameters:
dirIptc
- The IPTC directory- Returns:
- The caption entered, or
null
if missing or ifdirIptc
is null - Since:
- 15219
-
readHeadline
public static java.lang.String readHeadline(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the headline of the given IPTC directory.- Parameters:
dirIptc
- The IPTC directory- Returns:
- The headline entered, or
null
if missing or ifdirIptc
is null - Since:
- 15219
-
readKeywords
public static java.util.List<java.lang.String> readKeywords(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the keywords of the given IPTC directory.- Parameters:
dirIptc
- The IPTC directory- Returns:
- The keywords entered, or
null
if missing or ifdirIptc
is null - Since:
- 15219
-
readObjectName
public static java.lang.String readObjectName(com.drew.metadata.iptc.IptcDirectory dirIptc)
Returns the object name of the given IPTC directory.- Parameters:
dirIptc
- The IPTC directory- Returns:
- The object name entered, or
null
if missing or ifdirIptc
is null - Since:
- 15219
-
getRestoreOrientationTransform
public static java.awt.geom.AffineTransform getRestoreOrientationTransform(int orientation, int width, int height)
Returns a Transform that fixes the image orientation.Only orientation 1, 3, 6 and 8 are supported. Everything else is treated as 1.
- Parameters:
orientation
- the exif-orientation of the imagewidth
- the original width of the imageheight
- the original height of the image- Returns:
- a transform that rotates the image, so it is upright
-
orientationSwitchesDimensions
public static boolean orientationSwitchesDimensions(int orientation)
Check, if the given orientation switches width and height of the image. E.g. 90 degree rotationOnly orientation 1, 3, 6 and 8 are supported. Everything else is treated as 1.
- Parameters:
orientation
- the exif-orientation of the image- Returns:
- true, if it switches width and height
-
orientationNeedsCorrection
public static boolean orientationNeedsCorrection(int orientation)
Check, if the given orientation requires any correction to the image.Only orientation 1, 3, 6 and 8 are supported. Everything else is treated as 1.
- Parameters:
orientation
- the exif-orientation of the image- Returns:
- true, unless the orientation value is 1 or unsupported.
-
-