# Print output for @column tags ?> ExifInterface - Android SDK | Android Developers

Most visited

Recently visited

ExifInterface

public class ExifInterface
extends Object

java.lang.Object
   ↳ android.media.ExifInterface


This is a class for reading and writing Exif tags in a JPEG file or a RAW image file.

Supported formats are: JPEG, DNG, CR2, NEF, NRW, ARW, RW2, ORF, PEF, SRW, RAF and HEIF.

Attribute mutation is supported for JPEG image files.

Note: It is recommended to use the AndroidX ExifInterface Library since it is a superset of this class. In addition to the functionalities of this class, it supports parsing extra metadata such as exposure and data compression information as well as setting extra metadata such as GPS and datetime information.

Summary

Constants

int ORIENTATION_FLIP_HORIZONTAL

int ORIENTATION_FLIP_VERTICAL

int ORIENTATION_NORMAL

int ORIENTATION_ROTATE_180

int ORIENTATION_ROTATE_270

int ORIENTATION_ROTATE_90

int ORIENTATION_TRANSPOSE

int ORIENTATION_TRANSVERSE

int ORIENTATION_UNDEFINED

int STREAM_TYPE_EXIF_DATA_ONLY

Constant used to indicate that the input stream contains only Exif data.

int STREAM_TYPE_FULL_IMAGE_DATA

Constant used to indicate that the input stream contains the full image data.

String TAG_APERTURE

This constant is deprecated. use TAG_F_NUMBER instead

String TAG_APERTURE_VALUE

Type is rational.

String TAG_ARTIST

Type is String.

String TAG_BITS_PER_SAMPLE

Type is int.

String TAG_BRIGHTNESS_VALUE

Type is rational.

String TAG_CFA_PATTERN

Type is String.

String TAG_COLOR_SPACE

Type is int.

String TAG_COMPONENTS_CONFIGURATION

Type is String.

String TAG_COMPRESSED_BITS_PER_PIXEL

Type is rational.

String TAG_COMPRESSION

Type is int.

String TAG_CONTRAST

Type is int.

String TAG_COPYRIGHT

Type is String.

String TAG_CUSTOM_RENDERED

Type is int.

String TAG_DATETIME

Type is String.

String TAG_DATETIME_DIGITIZED

Type is String.

String TAG_DATETIME_ORIGINAL

Type is String.

String TAG_DEFAULT_CROP_SIZE

Type is int.

String TAG_DEVICE_SETTING_DESCRIPTION

Type is String.

String TAG_DIGITAL_ZOOM_RATIO

Type is double.

String TAG_DNG_VERSION

Type is int.

String TAG_EXIF_VERSION

Type is String.

String TAG_EXPOSURE_BIAS_VALUE

Type is double.

String TAG_EXPOSURE_INDEX

Type is rational.

String TAG_EXPOSURE_MODE

Type is int.

String TAG_EXPOSURE_PROGRAM

Type is int.

String TAG_EXPOSURE_TIME

Type is double.

String TAG_FILE_SOURCE

Type is String.

String TAG_FLASH

Type is int.

String TAG_FLASHPIX_VERSION

Type is String.

String TAG_FLASH_ENERGY

Type is rational.

String TAG_FOCAL_LENGTH

Type is rational.

String TAG_FOCAL_LENGTH_IN_35MM_FILM

Type is int.

String TAG_FOCAL_PLANE_RESOLUTION_UNIT

Type is int.

String TAG_FOCAL_PLANE_X_RESOLUTION

Type is rational.

String TAG_FOCAL_PLANE_Y_RESOLUTION

Type is rational.

String TAG_F_NUMBER

Type is double.

String TAG_GAIN_CONTROL

Type is int.

String TAG_GPS_ALTITUDE

The altitude (in meters) based on the reference in TAG_GPS_ALTITUDE_REF.

String TAG_GPS_ALTITUDE_REF

0 if the altitude is above sea level.

String TAG_GPS_AREA_INFORMATION

Type is String.

String TAG_GPS_DATESTAMP

Type is String.

String TAG_GPS_DEST_BEARING

Type is rational.

String TAG_GPS_DEST_BEARING_REF

Type is String.

String TAG_GPS_DEST_DISTANCE

Type is rational.

String TAG_GPS_DEST_DISTANCE_REF

Type is String.

String TAG_GPS_DEST_LATITUDE

Type is rational.

String TAG_GPS_DEST_LATITUDE_REF

Type is String.

String TAG_GPS_DEST_LONGITUDE

Type is rational.

String TAG_GPS_DEST_LONGITUDE_REF

Type is String.

String TAG_GPS_DIFFERENTIAL

Type is int.

String TAG_GPS_DOP

Type is rational.

String TAG_GPS_IMG_DIRECTION

Type is rational.

String TAG_GPS_IMG_DIRECTION_REF

Type is String.

String TAG_GPS_LATITUDE

Type is rational.

String TAG_GPS_LATITUDE_REF

Type is String.

String TAG_GPS_LONGITUDE

Type is rational.

String TAG_GPS_LONGITUDE_REF

Type is String.

String TAG_GPS_MAP_DATUM

Type is String.

String TAG_GPS_MEASURE_MODE

Type is String.

String TAG_GPS_PROCESSING_METHOD

Type is String.

String TAG_GPS_SATELLITES

Type is String.

String TAG_GPS_SPEED

Type is rational.

String TAG_GPS_SPEED_REF

Type is String.

String TAG_GPS_STATUS

Type is String.

String TAG_GPS_TIMESTAMP

Type is String.

String TAG_GPS_TRACK

Type is rational.

String TAG_GPS_TRACK_REF

Type is String.

String TAG_GPS_VERSION_ID

Type is String.

String TAG_IMAGE_DESCRIPTION

Type is String.

String TAG_IMAGE_LENGTH

Type is int.

String TAG_IMAGE_UNIQUE_ID

Type is String.

String TAG_IMAGE_WIDTH

Type is int.

String TAG_INTEROPERABILITY_INDEX

Type is String.

String TAG_ISO

This constant is deprecated. use TAG_ISO_SPEED_RATINGS instead

String TAG_ISO_SPEED_RATINGS

Type is int.

String TAG_JPEG_INTERCHANGE_FORMAT

Type is int.

String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH

Type is int.

String TAG_LIGHT_SOURCE

Type is int.

String TAG_MAKE

Type is String.

String TAG_MAKER_NOTE

Type is String.

String TAG_MAX_APERTURE_VALUE

Type is rational.

String TAG_METERING_MODE

Type is int.

String TAG_MODEL

Type is String.

String TAG_NEW_SUBFILE_TYPE

Type is int.

String TAG_OECF

Type is String.

String TAG_OFFSET_TIME

A tag used to record the offset from UTC (the time difference from Universal Time Coordinated including daylight saving time) of the time of DateTime tag.

String TAG_OFFSET_TIME_DIGITIZED

A tag used to record the offset from UTC (the time difference from Universal Time Coordinated including daylight saving time) of the time of DateTimeDigitized tag.

String TAG_OFFSET_TIME_ORIGINAL

A tag used to record the offset from UTC (the time difference from Universal Time Coordinated including daylight saving time) of the time of DateTimeOriginal tag.

String TAG_ORF_ASPECT_FRAME

Type is int.

String TAG_ORF_PREVIEW_IMAGE_LENGTH

Type is int.

String TAG_ORF_PREVIEW_IMAGE_START

Type is int.

String TAG_ORF_THUMBNAIL_IMAGE

Type is undefined.

String TAG_ORIENTATION

Type is int.

String TAG_PHOTOMETRIC_INTERPRETATION

Type is int.

String TAG_PIXEL_X_DIMENSION

Type is int.

String TAG_PIXEL_Y_DIMENSION

Type is int.

String TAG_PLANAR_CONFIGURATION

Type is int.

String TAG_PRIMARY_CHROMATICITIES

Type is rational.

String TAG_REFERENCE_BLACK_WHITE

Type is rational.

String TAG_RELATED_SOUND_FILE

Type is String.

String TAG_RESOLUTION_UNIT

Type is int.

String TAG_ROWS_PER_STRIP

Type is int.

String TAG_RW2_ISO

Type is int.

String TAG_RW2_JPG_FROM_RAW

Type is undefined.

String TAG_RW2_SENSOR_BOTTOM_BORDER

Type is int.

String TAG_RW2_SENSOR_LEFT_BORDER

Type is int.

String TAG_RW2_SENSOR_RIGHT_BORDER

Type is int.

String TAG_RW2_SENSOR_TOP_BORDER

Type is int.

String TAG_SAMPLES_PER_PIXEL

Type is int.

String TAG_SATURATION

Type is int.

String TAG_SCENE_CAPTURE_TYPE

Type is int.

String TAG_SCENE_TYPE

Type is String.

String TAG_SENSING_METHOD

Type is int.

String TAG_SHARPNESS

Type is int.

String TAG_SHUTTER_SPEED_VALUE

Type is rational.

String TAG_SOFTWARE

Type is String.

String TAG_SPATIAL_FREQUENCY_RESPONSE

Type is String.

String TAG_SPECTRAL_SENSITIVITY

Type is String.

String TAG_STRIP_BYTE_COUNTS

Type is int.

String TAG_STRIP_OFFSETS

Type is int.

String TAG_SUBFILE_TYPE

Type is int.

String TAG_SUBJECT_AREA

Type is int.

String TAG_SUBJECT_DISTANCE

Type is double.

String TAG_SUBJECT_DISTANCE_RANGE

Type is int.

String TAG_SUBJECT_LOCATION

Type is int.

String TAG_SUBSEC_TIME

Type is String.

String TAG_SUBSEC_TIME_DIG

This constant is deprecated. use TAG_SUBSEC_TIME_DIGITIZED instead

String TAG_SUBSEC_TIME_DIGITIZED

Type is String.

String TAG_SUBSEC_TIME_ORIG

This constant is deprecated. use TAG_SUBSEC_TIME_ORIGINAL instead

String TAG_SUBSEC_TIME_ORIGINAL

Type is String.

String TAG_THUMBNAIL_IMAGE_LENGTH

Type is int.

String TAG_THUMBNAIL_IMAGE_WIDTH

Type is int.

String TAG_THUMBNAIL_ORIENTATION

Type is int.

String TAG_TRANSFER_FUNCTION

Type is int.

String TAG_USER_COMMENT

Type is String.

String TAG_WHITE_BALANCE

Type is int.

String TAG_WHITE_POINT

Type is rational.

String TAG_XMP

Type is byte[].

String TAG_X_RESOLUTION

Type is rational.

String TAG_Y_CB_CR_COEFFICIENTS

Type is rational.

String TAG_Y_CB_CR_POSITIONING

Type is int.

String TAG_Y_CB_CR_SUB_SAMPLING

Type is int.

String TAG_Y_RESOLUTION

Type is rational.

int WHITEBALANCE_AUTO

int WHITEBALANCE_MANUAL

Public constructors

ExifInterface(File file)

Reads Exif tags from the specified image file.

ExifInterface(String filename)

Reads Exif tags from the specified image file.

ExifInterface(FileDescriptor fileDescriptor)

Reads Exif tags from the specified image file descriptor.

ExifInterface(InputStream inputStream)

Reads Exif tags from the specified image input stream.

ExifInterface(InputStream inputStream, int streamType)

Reads Exif tags from the specified image input stream based on the stream type.

Public methods

double getAltitude(double defaultValue)

Return the altitude in meters.

String getAttribute(String tag)

Returns the value of the specified tag or null if there is no such tag in the image file.

byte[] getAttributeBytes(String tag)

Returns the raw bytes for the value of the requested tag inside the image file, or null if the tag is not contained.

double getAttributeDouble(String tag, double defaultValue)

Returns the double value of the tag that is specified as rational or contains a double-formatted value.

int getAttributeInt(String tag, int defaultValue)

Returns the integer value of the specified tag.

long[] getAttributeRange(String tag)

Returns the offset and length of the requested tag inside the image file, or null if the tag is not contained.

boolean getLatLong(float[] output)

Stores the latitude and longitude value in a float array.

byte[] getThumbnail()

Returns the JPEG compressed thumbnail inside the image file, or null if there is no JPEG compressed thumbnail.

Bitmap getThumbnailBitmap()

Creates and returns a Bitmap object of the thumbnail image based on the byte array and the thumbnail compression value, or null if the compression type is unsupported.

byte[] getThumbnailBytes()

Returns the thumbnail bytes inside the image file, regardless of the compression type of the thumbnail image.

long[] getThumbnailRange()

Returns the offset and length of thumbnail inside the image file, or null if either there is no thumbnail or the thumbnail bytes are stored non-consecutively.

boolean hasAttribute(String tag)

Returns true if the image file has the given attribute defined.

boolean hasThumbnail()

Returns true if the image file has a thumbnail.

static boolean isSupportedMimeType(String mimeType)

Returns whether ExifInterface currently supports parsing data from the specified mime type or not.

boolean isThumbnailCompressed()

Returns true if thumbnail image is JPEG Compressed, or false if either thumbnail image does not exist or thumbnail image is uncompressed.

void saveAttributes()

Save the tag data into the original image file.

void setAttribute(String tag, String value)

Set the value of the specified tag.

Inherited methods

Constants

ORIENTATION_FLIP_HORIZONTAL

public static final int ORIENTATION_FLIP_HORIZONTAL

Constant Value: 2 (0x00000002)

ORIENTATION_FLIP_VERTICAL

public static final int ORIENTATION_FLIP_VERTICAL

Constant Value: 4 (0x00000004)

ORIENTATION_NORMAL

public static final int ORIENTATION_NORMAL

Constant Value: 1 (0x00000001)

ORIENTATION_ROTATE_180

public static final int ORIENTATION_ROTATE_180

Constant Value: 3 (0x00000003)

ORIENTATION_ROTATE_270

public static final int ORIENTATION_ROTATE_270

Constant Value: 8 (0x00000008)

ORIENTATION_ROTATE_90

public static final int ORIENTATION_ROTATE_90

Constant Value: 6 (0x00000006)

ORIENTATION_TRANSPOSE

public static final int ORIENTATION_TRANSPOSE

Constant Value: 5 (0x00000005)

ORIENTATION_TRANSVERSE

public static final int ORIENTATION_TRANSVERSE

Constant Value: 7 (0x00000007)

ORIENTATION_UNDEFINED

public static final int ORIENTATION_UNDEFINED

Constant Value: 0 (0x00000000)

STREAM_TYPE_EXIF_DATA_ONLY

public static final int STREAM_TYPE_EXIF_DATA_ONLY

Constant used to indicate that the input stream contains only Exif data.

The format of the Exif-only data must follow the below structure: Exif Identifier Code ("Exif\0\0") + TIFF header + IFD data See JEITA CP-3451C Section 4.5.2 and 4.5.4 specifications for more details.

Constant Value: 1 (0x00000001)

STREAM_TYPE_FULL_IMAGE_DATA

public static final int STREAM_TYPE_FULL_IMAGE_DATA

Constant used to indicate that the input stream contains the full image data.

The format of the image data should follow one of the image formats supported by this class.

Constant Value: 0 (0x00000000)

TAG_APERTURE

public static final String TAG_APERTURE

This constant is deprecated.
use TAG_F_NUMBER instead

Type is double.

Constant Value: "FNumber"

TAG_APERTURE_VALUE

public static final String TAG_APERTURE_VALUE

Type is rational.

Constant Value: "ApertureValue"

TAG_ARTIST

public static final String TAG_ARTIST

Type is String.

Constant Value: "Artist"

TAG_BITS_PER_SAMPLE

public static final String TAG_BITS_PER_SAMPLE

Type is int.

Constant Value: "BitsPerSample"

TAG_BRIGHTNESS_VALUE

public static final String TAG_BRIGHTNESS_VALUE

Type is rational.

Constant Value: "BrightnessValue"

TAG_CFA_PATTERN

public static final String TAG_CFA_PATTERN

Type is String.

Constant Value: "CFAPattern"

TAG_COLOR_SPACE

public static final String TAG_COLOR_SPACE

Type is int.

Constant Value: "ColorSpace"

TAG_COMPONENTS_CONFIGURATION

public static final String TAG_COMPONENTS_CONFIGURATION

Type is String.

Constant Value: "ComponentsConfiguration"

TAG_COMPRESSED_BITS_PER_PIXEL

public static final String TAG_COMPRESSED_BITS_PER_PIXEL

Type is rational.

Constant Value: "CompressedBitsPerPixel"

TAG_COMPRESSION

public static final String TAG_COMPRESSION

Type is int.

Constant Value: "Compression"

TAG_CONTRAST

public static final String TAG_CONTRAST

Type is int.

Constant Value: "Contrast"

public static final String TAG_COPYRIGHT

Type is String.

Constant Value: "Copyright"

TAG_CUSTOM_RENDERED

public static final String TAG_CUSTOM_RENDERED

Type is int.

Constant Value: "CustomRendered"

TAG_DATETIME

public static final String TAG_DATETIME

Type is String.

Constant Value: "DateTime"

TAG_DATETIME_DIGITIZED

public static final String TAG_DATETIME_DIGITIZED

Type is String.

Constant Value: "DateTimeDigitized"

TAG_DATETIME_ORIGINAL

public static final String TAG_DATETIME_ORIGINAL

Type is String.

Constant Value: "DateTimeOriginal"

TAG_DEFAULT_CROP_SIZE

public static final String TAG_DEFAULT_CROP_SIZE

Type is int. DNG Specification 1.4.0.0. Section 4

Constant Value: "DefaultCropSize"

TAG_DEVICE_SETTING_DESCRIPTION

public static final String TAG_DEVICE_SETTING_DESCRIPTION

Type is String.

Constant Value: "DeviceSettingDescription"

TAG_DIGITAL_ZOOM_RATIO

public static final String TAG_DIGITAL_ZOOM_RATIO

Type is double.

Constant Value: "DigitalZoomRatio"

TAG_DNG_VERSION

public static final String TAG_DNG_VERSION

Type is int. DNG Specification 1.4.0.0. Section 4

Constant Value: "DNGVersion"

TAG_EXIF_VERSION

public static final String TAG_EXIF_VERSION

Type is String.

Constant Value: "ExifVersion"

TAG_EXPOSURE_BIAS_VALUE

public static final String TAG_EXPOSURE_BIAS_VALUE

Type is double.

Constant Value: "ExposureBiasValue"

TAG_EXPOSURE_INDEX

public static final String TAG_EXPOSURE_INDEX

Type is rational.

Constant Value: "ExposureIndex"

TAG_EXPOSURE_MODE

public static final String TAG_EXPOSURE_MODE

Type is int.

Constant Value: "ExposureMode"

TAG_EXPOSURE_PROGRAM

public static final String TAG_EXPOSURE_PROGRAM

Type is int.

Constant Value: "ExposureProgram"

TAG_EXPOSURE_TIME

public static final String TAG_EXPOSURE_TIME

Type is double.

Constant Value: "ExposureTime"

TAG_FILE_SOURCE

public static final String TAG_FILE_SOURCE

Type is String.

Constant Value: "FileSource"

TAG_FLASH

public static final String TAG_FLASH

Type is int.

Constant Value: "Flash"

TAG_FLASHPIX_VERSION

public static final String TAG_FLASHPIX_VERSION

Type is String.

Constant Value: "FlashpixVersion"

TAG_FLASH_ENERGY

public static final String TAG_FLASH_ENERGY

Type is rational.

Constant Value: "FlashEnergy"

TAG_FOCAL_LENGTH

public static final String TAG_FOCAL_LENGTH

Type is rational.

Constant Value: "FocalLength"

TAG_FOCAL_LENGTH_IN_35MM_FILM

public static final String TAG_FOCAL_LENGTH_IN_35MM_FILM

Type is int.

Constant Value: "FocalLengthIn35mmFilm"

TAG_FOCAL_PLANE_RESOLUTION_UNIT

public static final String TAG_FOCAL_PLANE_RESOLUTION_UNIT

Type is int.

Constant Value: "FocalPlaneResolutionUnit"

TAG_FOCAL_PLANE_X_RESOLUTION

public static final String TAG_FOCAL_PLANE_X_RESOLUTION

Type is rational.

Constant Value: "FocalPlaneXResolution"

TAG_FOCAL_PLANE_Y_RESOLUTION

public static final String TAG_FOCAL_PLANE_Y_RESOLUTION

Type is rational.

Constant Value: "FocalPlaneYResolution"

TAG_F_NUMBER

public static final String TAG_F_NUMBER

Type is double.

Constant Value: "FNumber"

TAG_GAIN_CONTROL

public static final String TAG_GAIN_CONTROL

Type is int.

Constant Value: "GainControl"

TAG_GPS_ALTITUDE

public static final String TAG_GPS_ALTITUDE

The altitude (in meters) based on the reference in TAG_GPS_ALTITUDE_REF. Type is rational.

Constant Value: "GPSAltitude"

TAG_GPS_ALTITUDE_REF

public static final String TAG_GPS_ALTITUDE_REF

0 if the altitude is above sea level. 1 if the altitude is below sea level. Type is int.

Constant Value: "GPSAltitudeRef"

TAG_GPS_AREA_INFORMATION

public static final String TAG_GPS_AREA_INFORMATION

Type is String.

Constant Value: "GPSAreaInformation"

TAG_GPS_DATESTAMP

public static final String TAG_GPS_DATESTAMP

Type is String.

Constant Value: "GPSDateStamp"

TAG_GPS_DEST_BEARING

public static final String TAG_GPS_DEST_BEARING

Type is rational.

Constant Value: "GPSDestBearing"

TAG_GPS_DEST_BEARING_REF

public static final String TAG_GPS_DEST_BEARING_REF

Type is String.

Constant Value: "GPSDestBearingRef"

TAG_GPS_DEST_DISTANCE

public static final String TAG_GPS_DEST_DISTANCE

Type is rational.

Constant Value: "GPSDestDistance"

TAG_GPS_DEST_DISTANCE_REF

public static final String TAG_GPS_DEST_DISTANCE_REF

Type is String.

Constant Value: "GPSDestDistanceRef"

TAG_GPS_DEST_LATITUDE

public static final String TAG_GPS_DEST_LATITUDE

Type is rational.

Constant Value: "GPSDestLatitude"

TAG_GPS_DEST_LATITUDE_REF

public static final String TAG_GPS_DEST_LATITUDE_REF

Type is String.

Constant Value: "GPSDestLatitudeRef"

TAG_GPS_DEST_LONGITUDE

public static final String TAG_GPS_DEST_LONGITUDE

Type is rational.

Constant Value: "GPSDestLongitude"

TAG_GPS_DEST_LONGITUDE_REF

public static final String TAG_GPS_DEST_LONGITUDE_REF

Type is String.

Constant Value: "GPSDestLongitudeRef"

TAG_GPS_DIFFERENTIAL

public static final String TAG_GPS_DIFFERENTIAL

Type is int.

Constant Value: "GPSDifferential"

TAG_GPS_DOP

public static final String TAG_GPS_DOP

Type is rational.

Constant Value: "GPSDOP"

TAG_GPS_IMG_DIRECTION

public static final String TAG_GPS_IMG_DIRECTION

Type is rational.

Constant Value: "GPSImgDirection"

TAG_GPS_IMG_DIRECTION_REF

public static final String TAG_GPS_IMG_DIRECTION_REF

Type is String.

Constant Value: "GPSImgDirectionRef"

TAG_GPS_LATITUDE

public static final String TAG_GPS_LATITUDE

Type is rational. Format is "num1/denom1,num2/denom2,num3/denom3".

Constant Value: "GPSLatitude"

TAG_GPS_LATITUDE_REF

public static final String TAG_GPS_LATITUDE_REF

Type is String.

Constant Value: "GPSLatitudeRef"

TAG_GPS_LONGITUDE

public static final String TAG_GPS_LONGITUDE

Type is rational. Format is "num1/denom1,num2/denom2,num3/denom3".

Constant Value: "GPSLongitude"

TAG_GPS_LONGITUDE_REF

public static final String TAG_GPS_LONGITUDE_REF

Type is String.

Constant Value: "GPSLongitudeRef"

TAG_GPS_MAP_DATUM

public static final String TAG_GPS_MAP_DATUM

Type is String.

Constant Value: "GPSMapDatum"

TAG_GPS_MEASURE_MODE

public static final String TAG_GPS_MEASURE_MODE

Type is String.

Constant Value: "GPSMeasureMode"

TAG_GPS_PROCESSING_METHOD

public static final String TAG_GPS_PROCESSING_METHOD

Type is String. Name of GPS processing method used for location finding.

Constant Value: "GPSProcessingMethod"

TAG_GPS_SATELLITES

public static final String TAG_GPS_SATELLITES

Type is String.

Constant Value: "GPSSatellites"

TAG_GPS_SPEED

public static final String TAG_GPS_SPEED

Type is rational.

Constant Value: "GPSSpeed"

TAG_GPS_SPEED_REF

public static final String TAG_GPS_SPEED_REF

Type is String.

Constant Value: "GPSSpeedRef"

TAG_GPS_STATUS

public static final String TAG_GPS_STATUS

Type is String.

Constant Value: "GPSStatus"

TAG_GPS_TIMESTAMP

public static final String TAG_GPS_TIMESTAMP

Type is String. Format is "hh:mm:ss".

Constant Value: "GPSTimeStamp"

TAG_GPS_TRACK

public static final String TAG_GPS_TRACK

Type is rational.

Constant Value: "GPSTrack"

TAG_GPS_TRACK_REF

public static final String TAG_GPS_TRACK_REF

Type is String.

Constant Value: "GPSTrackRef"

TAG_GPS_VERSION_ID

public static final String TAG_GPS_VERSION_ID

Type is String.

Constant Value: "GPSVersionID"

TAG_IMAGE_DESCRIPTION

public static final String TAG_IMAGE_DESCRIPTION

Type is String.

Constant Value: "ImageDescription"

TAG_IMAGE_LENGTH

public static final String TAG_IMAGE_LENGTH

Type is int.

Constant Value: "ImageLength"

TAG_IMAGE_UNIQUE_ID

public static final String TAG_IMAGE_UNIQUE_ID

Type is String.

Constant Value: "ImageUniqueID"

TAG_IMAGE_WIDTH

public static final String TAG_IMAGE_WIDTH

Type is int.

Constant Value: "ImageWidth"

TAG_INTEROPERABILITY_INDEX

public static final String TAG_INTEROPERABILITY_INDEX

Type is String.

Constant Value: "InteroperabilityIndex"

TAG_ISO

public static final String TAG_ISO

This constant is deprecated.
use TAG_ISO_SPEED_RATINGS instead

Type is int.

Constant Value: "ISOSpeedRatings"

TAG_ISO_SPEED_RATINGS

public static final String TAG_ISO_SPEED_RATINGS

Type is int.

Constant Value: "ISOSpeedRatings"

TAG_JPEG_INTERCHANGE_FORMAT

public static final String TAG_JPEG_INTERCHANGE_FORMAT

Type is int.

Constant Value: "JPEGInterchangeFormat"

TAG_JPEG_INTERCHANGE_FORMAT_LENGTH

public static final String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH

Type is int.

Constant Value: "JPEGInterchangeFormatLength"

TAG_LIGHT_SOURCE

public static final String TAG_LIGHT_SOURCE

Type is int.

Constant Value: "LightSource"

TAG_MAKE

public static final String TAG_MAKE

Type is String.

Constant Value: "Make"

TAG_MAKER_NOTE

public static final String TAG_MAKER_NOTE

Type is String.

Constant Value: "MakerNote"

TAG_MAX_APERTURE_VALUE

public static final String TAG_MAX_APERTURE_VALUE

Type is rational.

Constant Value: "MaxApertureValue"

TAG_METERING_MODE

public static final String TAG_METERING_MODE

Type is int.

Constant Value: "MeteringMode"

TAG_MODEL

public static final String TAG_MODEL

Type is String.

Constant Value: "Model"

TAG_NEW_SUBFILE_TYPE

public static final String TAG_NEW_SUBFILE_TYPE

Type is int.

Constant Value: "NewSubfileType"

TAG_OECF

public static final String TAG_OECF

Type is String.

Constant Value: "OECF"

TAG_OFFSET_TIME

public static final String TAG_OFFSET_TIME

A tag used to record the offset from UTC (the time difference from Universal Time Coordinated including daylight saving time) of the time of DateTime tag. The format when recording the offset is "±HH:MM". The part of "±" shall be recorded as "+" or "-". When the offsets are unknown, all the character spaces except colons (":") should be filled with blank characters, or else the Interoperability field should be filled with blank characters. The character string length is 7 Bytes including NULL for termination. When the field is left blank, it is treated as unknown.

  • Tag = 36880
  • Type = String
  • Length = 7
  • Default = None

Constant Value: "OffsetTime"

TAG_OFFSET_TIME_DIGITIZED

public static final String TAG_OFFSET_TIME_DIGITIZED

A tag used to record the offset from UTC (the time difference from Universal Time Coordinated including daylight saving time) of the time of DateTimeDigitized tag. The format when recording the offset is "±HH:MM". The part of "±" shall be recorded as "+" or "-". When the offsets are unknown, all the character spaces except colons (":") should be filled with blank characters, or else the Interoperability field should be filled with blank characters. The character string length is 7 Bytes including NULL for termination. When the field is left blank, it is treated as unknown.

  • Tag = 36882
  • Type = String
  • Length = 7
  • Default = None

Constant Value: "OffsetTimeDigitized"

TAG_OFFSET_TIME_ORIGINAL

public static final String TAG_OFFSET_TIME_ORIGINAL

A tag used to record the offset from UTC (the time difference from Universal Time Coordinated including daylight saving time) of the time of DateTimeOriginal tag. The format when recording the offset is "±HH:MM". The part of "±" shall be recorded as "+" or "-". When the offsets are unknown, all the character spaces except colons (":") should be filled with blank characters, or else the Interoperability field should be filled with blank characters. The character string length is 7 Bytes including NULL for termination. When the field is left blank, it is treated as unknown.

  • Tag = 36881
  • Type = String
  • Length = 7
  • Default = None

Constant Value: "OffsetTimeOriginal"

TAG_ORF_ASPECT_FRAME

public static final String TAG_ORF_ASPECT_FRAME

Type is int. See Olympus Image Processing tags in http://www.exiv2.org/tags-olympus.html.

Constant Value: "AspectFrame"

TAG_ORF_PREVIEW_IMAGE_LENGTH

public static final String TAG_ORF_PREVIEW_IMAGE_LENGTH

Type is int. See Olympus Camera Settings tags in http://www.exiv2.org/tags-olympus.html.

Constant Value: "PreviewImageLength"

TAG_ORF_PREVIEW_IMAGE_START

public static final String TAG_ORF_PREVIEW_IMAGE_START

Type is int. See Olympus Camera Settings tags in http://www.exiv2.org/tags-olympus.html.

Constant Value: "PreviewImageStart"

TAG_ORF_THUMBNAIL_IMAGE

public static final String TAG_ORF_THUMBNAIL_IMAGE

Type is undefined. See Olympus MakerNote tags in http://www.exiv2.org/tags-olympus.html.

Constant Value: "ThumbnailImage"

TAG_ORIENTATION

public static final String TAG_ORIENTATION

Type is int.

Constant Value: "Orientation"

TAG_PHOTOMETRIC_INTERPRETATION

public static final String TAG_PHOTOMETRIC_INTERPRETATION

Type is int.

Constant Value: "PhotometricInterpretation"

TAG_PIXEL_X_DIMENSION

public static final String TAG_PIXEL_X_DIMENSION

Type is int.

Constant Value: "PixelXDimension"

TAG_PIXEL_Y_DIMENSION

public static final String TAG_PIXEL_Y_DIMENSION

Type is int.

Constant Value: "PixelYDimension"

TAG_PLANAR_CONFIGURATION

public static final String TAG_PLANAR_CONFIGURATION

Type is int.

Constant Value: "PlanarConfiguration"

TAG_PRIMARY_CHROMATICITIES

public static final String TAG_PRIMARY_CHROMATICITIES

Type is rational.

Constant Value: "PrimaryChromaticities"

TAG_REFERENCE_BLACK_WHITE

public static final String TAG_REFERENCE_BLACK_WHITE

Type is rational.

Constant Value: "ReferenceBlackWhite"

public static final String TAG_RELATED_SOUND_FILE

Type is String.

Constant Value: "RelatedSoundFile"

TAG_RESOLUTION_UNIT

public static final String TAG_RESOLUTION_UNIT

Type is int.

Constant Value: "ResolutionUnit"

TAG_ROWS_PER_STRIP

public static final String TAG_ROWS_PER_STRIP

Type is int.

Constant Value: "RowsPerStrip"

TAG_RW2_ISO

public static final String TAG_RW2_ISO

Type is int. See PanasonicRaw tags in http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PanasonicRaw.html

Constant Value: "ISO"

TAG_RW2_JPG_FROM_RAW

public static final String TAG_RW2_JPG_FROM_RAW

Type is undefined. See PanasonicRaw tags in http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PanasonicRaw.html

Constant Value: "JpgFromRaw"

TAG_RW2_SENSOR_BOTTOM_BORDER

public static final String TAG_RW2_SENSOR_BOTTOM_BORDER

Type is int. See PanasonicRaw tags in http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PanasonicRaw.html

Constant Value: "SensorBottomBorder"

TAG_RW2_SENSOR_LEFT_BORDER

public static final String TAG_RW2_SENSOR_LEFT_BORDER

Type is int. See PanasonicRaw tags in http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PanasonicRaw.html

Constant Value: "SensorLeftBorder"

TAG_RW2_SENSOR_RIGHT_BORDER

public static final String TAG_RW2_SENSOR_RIGHT_BORDER

Type is int. See PanasonicRaw tags in http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PanasonicRaw.html

Constant Value: "SensorRightBorder"

TAG_RW2_SENSOR_TOP_BORDER

public static final String TAG_RW2_SENSOR_TOP_BORDER

Type is int. See PanasonicRaw tags in http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PanasonicRaw.html

Constant Value: "SensorTopBorder"

TAG_SAMPLES_PER_PIXEL

public static final String TAG_SAMPLES_PER_PIXEL

Type is int.

Constant Value: "SamplesPerPixel"

TAG_SATURATION

public static final String TAG_SATURATION

Type is int.

Constant Value: "Saturation"

TAG_SCENE_CAPTURE_TYPE

public static final String TAG_SCENE_CAPTURE_TYPE

Type is int.

Constant Value: "SceneCaptureType"

TAG_SCENE_TYPE

public static final String TAG_SCENE_TYPE

Type is String.

Constant Value: "SceneType"

TAG_SENSING_METHOD

public static final String TAG_SENSING_METHOD

Type is int.

Constant Value: "SensingMethod"

TAG_SHARPNESS

public static final String TAG_SHARPNESS

Type is int.

Constant Value: "Sharpness"

TAG_SHUTTER_SPEED_VALUE

public static final String TAG_SHUTTER_SPEED_VALUE

Type is rational.

Constant Value: "ShutterSpeedValue"

TAG_SOFTWARE

public static final String TAG_SOFTWARE

Type is String.

Constant Value: "Software"

TAG_SPATIAL_FREQUENCY_RESPONSE

public static final String TAG_SPATIAL_FREQUENCY_RESPONSE

Type is String.

Constant Value: "SpatialFrequencyResponse"

TAG_SPECTRAL_SENSITIVITY

public static final String TAG_SPECTRAL_SENSITIVITY

Type is String.

Constant Value: "SpectralSensitivity"

TAG_STRIP_BYTE_COUNTS

public static final String TAG_STRIP_BYTE_COUNTS

Type is int.

Constant Value: "StripByteCounts"

TAG_STRIP_OFFSETS

public static final String TAG_STRIP_OFFSETS

Type is int.

Constant Value: "StripOffsets"

TAG_SUBFILE_TYPE

public static final String TAG_SUBFILE_TYPE

Type is int.

Constant Value: "SubfileType"

TAG_SUBJECT_AREA

public static final String TAG_SUBJECT_AREA

Type is int.

Constant Value: "SubjectArea"

TAG_SUBJECT_DISTANCE

public static final String TAG_SUBJECT_DISTANCE

Type is double.

Constant Value: "SubjectDistance"

TAG_SUBJECT_DISTANCE_RANGE

public static final String TAG_SUBJECT_DISTANCE_RANGE

Type is int.

Constant Value: "SubjectDistanceRange"

TAG_SUBJECT_LOCATION

public static final String TAG_SUBJECT_LOCATION

Type is int.

Constant Value: "SubjectLocation"

TAG_SUBSEC_TIME

public static final String TAG_SUBSEC_TIME

Type is String.

Constant Value: "SubSecTime"

TAG_SUBSEC_TIME_DIG

public static final String TAG_SUBSEC_TIME_DIG

This constant is deprecated.
use TAG_SUBSEC_TIME_DIGITIZED instead

Type is String.

Constant Value: "SubSecTimeDigitized"

TAG_SUBSEC_TIME_DIGITIZED

public static final String TAG_SUBSEC_TIME_DIGITIZED

Type is String.

Constant Value: "SubSecTimeDigitized"

TAG_SUBSEC_TIME_ORIG

public static final String TAG_SUBSEC_TIME_ORIG

This constant is deprecated.
use TAG_SUBSEC_TIME_ORIGINAL instead

Type is String.

Constant Value: "SubSecTimeOriginal"

TAG_SUBSEC_TIME_ORIGINAL

public static final String TAG_SUBSEC_TIME_ORIGINAL

Type is String.

Constant Value: "SubSecTimeOriginal"

TAG_THUMBNAIL_IMAGE_LENGTH

public static final String TAG_THUMBNAIL_IMAGE_LENGTH

Type is int.

Constant Value: "ThumbnailImageLength"

TAG_THUMBNAIL_IMAGE_WIDTH

public static final String TAG_THUMBNAIL_IMAGE_WIDTH

Type is int.

Constant Value: "ThumbnailImageWidth"

TAG_THUMBNAIL_ORIENTATION

public static final String TAG_THUMBNAIL_ORIENTATION

Type is int.

Constant Value: "ThumbnailOrientation"

TAG_TRANSFER_FUNCTION

public static final String TAG_TRANSFER_FUNCTION

Type is int.

Constant Value: "TransferFunction"

TAG_USER_COMMENT

public static final String TAG_USER_COMMENT

Type is String.

Constant Value: "UserComment"

TAG_WHITE_BALANCE

public static final String TAG_WHITE_BALANCE

Type is int.

Constant Value: "WhiteBalance"

TAG_WHITE_POINT

public static final String TAG_WHITE_POINT

Type is rational.

Constant Value: "WhitePoint"

TAG_XMP

public static final String TAG_XMP

Type is byte[]. See Extensible Metadata Platform (XMP) for details on contents.

Constant Value: "Xmp"

TAG_X_RESOLUTION

public static final String TAG_X_RESOLUTION

Type is rational.

Constant Value: "XResolution"

TAG_Y_CB_CR_COEFFICIENTS

public static final String TAG_Y_CB_CR_COEFFICIENTS

Type is rational.

Constant Value: "YCbCrCoefficients"

TAG_Y_CB_CR_POSITIONING

public static final String TAG_Y_CB_CR_POSITIONING

Type is int.

Constant Value: "YCbCrPositioning"

TAG_Y_CB_CR_SUB_SAMPLING

public static final String TAG_Y_CB_CR_SUB_SAMPLING

Type is int.

Constant Value: "YCbCrSubSampling"

TAG_Y_RESOLUTION

public static final String TAG_Y_RESOLUTION

Type is rational.

Constant Value: "YResolution"

WHITEBALANCE_AUTO

public static final int WHITEBALANCE_AUTO

Constant Value: 0 (0x00000000)

WHITEBALANCE_MANUAL

public static final int WHITEBALANCE_MANUAL

Constant Value: 1 (0x00000001)

Public constructors

ExifInterface

public ExifInterface (File file)

Reads Exif tags from the specified image file.

Parameters
file File: the file of the image data This value cannot be null.

Throws
NullPointerException if file is null
IOException if an I/O error occurs while retrieving file descriptor via FileInputStream#getFD().

ExifInterface

public ExifInterface (String filename)

Reads Exif tags from the specified image file.

Parameters
filename String: the name of the file of the image data This value cannot be null.

Throws
NullPointerException if file name is null
IOException if an I/O error occurs while retrieving file descriptor via FileInputStream#getFD().

ExifInterface

public ExifInterface (FileDescriptor fileDescriptor)

Reads Exif tags from the specified image file descriptor. Attribute mutation is supported for writable and seekable file descriptors only. This constructor will not rewind the offset of the given file descriptor. Developers should close the file descriptor after use.

Parameters
fileDescriptor FileDescriptor: the file descriptor of the image data This value cannot be null.

Throws
NullPointerException if file descriptor is null
IOException if an error occurs while duplicating the file descriptor via Os#dup(FileDescriptor).

ExifInterface

public ExifInterface (InputStream inputStream)

Reads Exif tags from the specified image input stream. Attribute mutation is not supported for input streams. The given input stream will proceed from its current position. Developers should close the input stream after use. This constructor is not intended to be used with an input stream that performs any networking operations.

Parameters
inputStream InputStream: the input stream that contains the image data This value cannot be null.

Throws
NullPointerException if the input stream is null
IOException

ExifInterface

public ExifInterface (InputStream inputStream, 
                int streamType)

Reads Exif tags from the specified image input stream based on the stream type. Attribute mutation is not supported for input streams. The given input stream will proceed from its current position. Developers should close the input stream after use. This constructor is not intended to be used with an input stream that performs any networking operations.

Parameters
inputStream InputStream: the input stream that contains the image data This value cannot be null.

streamType int: the type of input stream Value is STREAM_TYPE_FULL_IMAGE_DATA, or STREAM_TYPE_EXIF_DATA_ONLY

Throws
NullPointerException if the input stream is null
IOException if an I/O error occurs while retrieving file descriptor via FileInputStream#getFD().

Public methods

getAltitude

public double getAltitude (double defaultValue)

Return the altitude in meters. If the exif tag does not exist, return defaultValue.

Parameters
defaultValue double: the value to return if the tag is not available.

Returns
double

getAttribute

public String getAttribute (String tag)

Returns the value of the specified tag or null if there is no such tag in the image file.

Parameters
tag String: the name of the tag. This value cannot be null.

Returns
String

getAttributeBytes

public byte[] getAttributeBytes (String tag)

Returns the raw bytes for the value of the requested tag inside the image file, or null if the tag is not contained.

Parameters
tag String: This value cannot be null.

Returns
byte[] raw bytes for the value of the requested tag, or null if no tag was found.

getAttributeDouble

public double getAttributeDouble (String tag, 
                double defaultValue)

Returns the double value of the tag that is specified as rational or contains a double-formatted value. If there is no such tag in the image file or the value cannot be parsed as double, return defaultValue.

Parameters
tag String: the name of the tag. This value cannot be null.

defaultValue double: the value to return if the tag is not available.

Returns
double

getAttributeInt

public int getAttributeInt (String tag, 
                int defaultValue)

Returns the integer value of the specified tag. If there is no such tag in the image file or the value cannot be parsed as integer, return defaultValue.

Parameters
tag String: the name of the tag. This value cannot be null.

defaultValue int: the value to return if the tag is not available.

Returns
int

getAttributeRange

public long[] getAttributeRange (String tag)

Returns the offset and length of the requested tag inside the image file, or null if the tag is not contained.

Parameters
tag String: This value cannot be null.

Returns
long[] two-element array, the offset in the first value, and length in the second, or null if no tag was found.

Throws
IllegalStateException if saveAttributes() has been called since the underlying file was initially parsed, since that means offsets may have changed.

getLatLong

public boolean getLatLong (float[] output)

Stores the latitude and longitude value in a float array. The first element is the latitude, and the second element is the longitude. Returns false if the Exif tags are not available.

Parameters
output float

Returns
boolean

getThumbnail

public byte[] getThumbnail ()

Returns the JPEG compressed thumbnail inside the image file, or null if there is no JPEG compressed thumbnail. The returned data can be decoded using BitmapFactory.decodeByteArray(byte[], int, int)

Returns
byte[]

getThumbnailBitmap

public Bitmap getThumbnailBitmap ()

Creates and returns a Bitmap object of the thumbnail image based on the byte array and the thumbnail compression value, or null if the compression type is unsupported.

Returns
Bitmap

getThumbnailBytes

public byte[] getThumbnailBytes ()

Returns the thumbnail bytes inside the image file, regardless of the compression type of the thumbnail image.

Returns
byte[]

getThumbnailRange

public long[] getThumbnailRange ()

Returns the offset and length of thumbnail inside the image file, or null if either there is no thumbnail or the thumbnail bytes are stored non-consecutively.

Returns
long[] two-element array, the offset in the first value, and length in the second, or null if no thumbnail was found or the thumbnail strips are not placed consecutively.

Throws
IllegalStateException if saveAttributes() has been called since the underlying file was initially parsed, since that means offsets may have changed.

hasAttribute

public boolean hasAttribute (String tag)

Returns true if the image file has the given attribute defined.

Parameters
tag String: the name of the tag. This value cannot be null.

Returns
boolean

hasThumbnail

public boolean hasThumbnail ()

Returns true if the image file has a thumbnail.

Returns
boolean

isSupportedMimeType

public static boolean isSupportedMimeType (String mimeType)

Returns whether ExifInterface currently supports parsing data from the specified mime type or not.

Parameters
mimeType String: the string value of mime type This value cannot be null.

Returns
boolean

isThumbnailCompressed

public boolean isThumbnailCompressed ()

Returns true if thumbnail image is JPEG Compressed, or false if either thumbnail image does not exist or thumbnail image is uncompressed.

Returns
boolean

saveAttributes

public void saveAttributes ()

Save the tag data into the original image file. This is expensive because it involves copying all the data from one file to another and deleting the old file and renaming the other. It's best to use setAttribute(java.lang.String, java.lang.String) to set all attributes to write and make a single call rather than multiple calls for each attribute.

This method is only supported for JPEG and PNG files.

Note: after calling this method, any attempts to obtain range information from getAttributeRange(java.lang.String) or getThumbnailRange() will throw IllegalStateException, since the offsets may have changed in the newly written file.

Throws
IOException

setAttribute

public void setAttribute (String tag, 
                String value)

Set the value of the specified tag.

Parameters
tag String: the name of the tag. This value cannot be null.

value String: the value of the tag. This value may be null.