Skip to content

Commit 9b27ee3

Browse files
committed
Add support for EXIF 2.32
Fix tag naming Deprecate invalid tags
1 parent 1e725b0 commit 9b27ee3

File tree

1 file changed

+141
-7
lines changed

1 file changed

+141
-7
lines changed

src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java

Lines changed: 141 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242

4343
/**
4444
* References:
45+
* http://www.cipa.jp/std/std-sec_e.html
46+
* The Camera & Imaging Products Association (CIPA) is the driving body behind the EXIF standard
4547
* http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
4648
* http://tiki-lounge.com/~raf/tiff/fields.html
4749
* http://www.awaresystems.be/imaging/tiff/tifftags.html
@@ -218,9 +220,44 @@ public final class ExifTagConstants {
218220
public static final TagInfoShorts EXIF_TAG_ISO = new TagInfoShorts(
219221
"PhotographicSensitivity", 0x8827, -1,
220222
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
223+
/**
224+
* @deprecated The tag does not comply with the EXIF specification.
225+
* Use {@link #EXIF_TAG_OECF} instead.
226+
* @see #EXIF_TAG_OECF
227+
*/
228+
@Deprecated
221229
public static final TagInfoUndefineds EXIF_TAG_OPTO_ELECTRIC_CONV_FACTOR = new TagInfoUndefineds(
222230
"Opto - Electric Conv Factor", 0x8828, -1,
223231
TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
232+
public static final TagInfoUndefineds EXIF_TAG_OECF = new TagInfoUndefineds(
233+
"OECF", 0x8828, -1,
234+
TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
235+
public static final TagInfoShort EXIF_TAG_SENSITIVITY_TYPE = new TagInfoShort(
236+
"SensitivityType", 0x8830,
237+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
238+
public static final short SENSITIVITY_TYPE_VALUE_UNKNOWN = 0;
239+
public static final short SENSITIVITY_TYPE_VALUE_SOS = 1;
240+
public static final short SENSITIVITY_TYPE_VALUE_REI = 2;
241+
public static final short SENSITIVITY_TYPE_VALUE_ISO = 3;
242+
public static final short SENSITIVITY_TYPE_VALUE_SOS_REI = 4;
243+
public static final short SENSITIVITY_TYPE_VALUE_SOS_ISO = 5;
244+
public static final short SENSITIVITY_TYPE_VALUE_REI_ISO = 6;
245+
public static final short SENSITIVITY_TYPE_VALUE_SOS_REI_ISO = 7;
246+
public static final TagInfoLong EXIF_TAG_STANDARD_OUTPUT_SENSITIVITY = new TagInfoLong(
247+
"StandardOutputSensitivity", 0x8831,
248+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
249+
public static final TagInfoLong EXIF_TAG_RECOMMENDED_EXPOSURE_INDEX = new TagInfoLong(
250+
"RecommendedExposureIndex", 0x8832,
251+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
252+
public static final TagInfoLong EXIF_TAG_ISO_SPEED = new TagInfoLong(
253+
"ISOSpeed", 0x8833,
254+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
255+
public static final TagInfoLong EXIF_TAG_ISO_SPEED_LATITUDE_YYY = new TagInfoLong(
256+
"ISOSpeedLatitudeyyy", 0x8834,
257+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
258+
public static final TagInfoLong EXIF_TAG_ISO_SPEED_LATITUDE_ZZZ = new TagInfoLong(
259+
"ISOSpeedLatitudezzz", 0x8834,
260+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
224261
public static final TagInfoLong EXIF_TAG_LEAF_SUB_IFD = new TagInfoLong(
225262
"LeafSubIFD", 0x888a,
226263
TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
@@ -231,10 +268,20 @@ public final class ExifTagConstants {
231268
"DateTimeOriginal", 0x9003, 20,
232269
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
233270
public static final TagInfoAscii EXIF_TAG_DATE_TIME_DIGITIZED = new TagInfoAscii(
234-
"DateTimeDigitized", 0x9004, 20, TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
271+
"DateTimeDigitized", 0x9004, 20,
272+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
235273
public static final TagInfoUndefineds EXIF_TAG_COMPONENTS_CONFIGURATION = new TagInfoUndefineds(
236274
"ComponentsConfiguration", 0x9101, 4,
237275
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
276+
public static final TagInfoAscii EXIF_TAG_OFFSET_TIME = new TagInfoAscii(
277+
"OffsetTime", 0x9010, 7,
278+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
279+
public static final TagInfoAscii EXIF_TAG_OFFSET_TIME_ORIGINAL = new TagInfoAscii(
280+
"OffsetTimeOriginal", 0x9011, 7,
281+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
282+
public static final TagInfoAscii EXIF_TAG_OFFSET_TIME_DIGITIZED = new TagInfoAscii(
283+
"OffsetTimeDigitized", 0x9012, 7,
284+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
238285
public static final TagInfoRational EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = new TagInfoRational(
239286
"CompressedBitsPerPixel", 0x9102,
240287
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
@@ -247,14 +294,23 @@ public final class ExifTagConstants {
247294
public static final TagInfoSRational EXIF_TAG_BRIGHTNESS_VALUE = new TagInfoSRational(
248295
"BrightnessValue", 0x9203,
249296
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
297+
/**
298+
* @deprecated The tag does not comply with the EXIF specification.
299+
* Use {@link #EXIF_TAG_EXPOSURE_BIAS_VALUE} instead.
300+
* @see #EXIF_TAG_EXPOSURE_BIAS_VALUE
301+
*/
302+
@Deprecated
250303
public static final TagInfoSRational EXIF_TAG_EXPOSURE_COMPENSATION = new TagInfoSRational(
251304
"ExposureCompensation", 0x9204,
252305
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
306+
public static final TagInfoSRational EXIF_TAG_EXPOSURE_BIAS_VALUE = new TagInfoSRational(
307+
"ExposureBiasValue", 0x9204,
308+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
253309
public static final TagInfoRational EXIF_TAG_MAX_APERTURE_VALUE = new TagInfoRational(
254310
"MaxApertureValue", 0x9205,
255311
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
256312
public static final TagInfoRationals EXIF_TAG_SUBJECT_DISTANCE = new TagInfoRationals(
257-
"Subject Distance", 0x9206, -1,
313+
"SubjectDistance", 0x9206, -1,
258314
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
259315
public static final TagInfoShort EXIF_TAG_METERING_MODE = new TagInfoShort(
260316
"MeteringMode", 0x9207,
@@ -343,15 +399,51 @@ public final class ExifTagConstants {
343399
public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME_DIGITIZED = new TagInfoAscii(
344400
"SubSecTimeDigitized", 0x9292, -1,
345401
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
402+
public static final TagInfoSRational EXIF_TAG_TEMPERATURE = new TagInfoSRational(
403+
"Temperature", 0x9400,
404+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
405+
public static final TagInfoRational EXIF_TAG_HUMIDITY = new TagInfoRational(
406+
"Humidity", 0x9401,
407+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
408+
public static final TagInfoRational EXIF_TAG_PRESSURE = new TagInfoRational(
409+
"Pressure", 0x9402,
410+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
411+
public static final TagInfoRational EXIF_TAG_WATER_DEPTH = new TagInfoRational(
412+
"WaterDepth", 0x9403,
413+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
414+
public static final TagInfoRational EXIF_TAG_ACCELERATION = new TagInfoRational(
415+
"Acceleration", 0x9404,
416+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
417+
public static final TagInfoSRational EXIF_TAG_CAMERA_ELEVATION_ANGLE = new TagInfoSRational(
418+
"CameraElevationAngle", 0x9405,
419+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
346420
public static final TagInfoUndefineds EXIF_TAG_FLASHPIX_VERSION = new TagInfoUndefineds(
347421
"FlashpixVersion", 0xa000, 4,
348422
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
423+
/**
424+
* @deprecated The tag does not comply with the EXIF specification.
425+
* Use {@link #EXIF_TAG_PIXEL_X_DIMENSION} instead.
426+
* @see #EXIF_TAG_PIXEL_X_DIMENSION
427+
*/
428+
@Deprecated
349429
public static final TagInfoShort EXIF_TAG_EXIF_IMAGE_WIDTH = new TagInfoShort(
350430
"ExifImageWidth", 0xa002,
351431
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
432+
public static final TagInfoShortOrLong EXIF_TAG_PIXEL_X_DIMENSION = new TagInfoShortOrLong(
433+
"PixelXDimension", 0xa002, 1,
434+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
435+
/**
436+
* @deprecated The tag does not comply with the EXIF specification.
437+
* Use {@link #EXIF_TAG_PIXEL_Y_DIMENSION} instead.
438+
* @see #EXIF_TAG_PIXEL_Y_DIMENSION
439+
*/
440+
@Deprecated
352441
public static final TagInfoShort EXIF_TAG_EXIF_IMAGE_LENGTH = new TagInfoShort(
353442
"ExifImageLength", 0xa003,
354443
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
444+
public static final TagInfoShortOrLong EXIF_TAG_PIXEL_Y_DIMENSION = new TagInfoShortOrLong(
445+
"PixelYDimension", 0xa003, 1,
446+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD, false);
355447
public static final TagInfoAscii EXIF_TAG_RELATED_SOUND_FILE = new TagInfoAscii(
356448
"RelatedSoundFile", 0xa004, 13,
357449
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
@@ -418,9 +510,18 @@ public final class ExifTagConstants {
418510
public static final TagInfoUndefined EXIF_TAG_SCENE_TYPE = new TagInfoUndefined(
419511
"SceneType", 0xa301,
420512
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
513+
/**
514+
* @deprecated This constant does not comply with the Java language constant
515+
* naming convention. Use {@link #EXIF_TAG_CFA_PATTERN} instead.
516+
* @see #EXIF_TAG_CFA_PATTERN
517+
*/
518+
@Deprecated
421519
public static final TagInfoUndefineds EXIF_TAG_CFAPATTERN = new TagInfoUndefineds(
422520
"CFAPattern", 0xa302, -1,
423521
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
522+
public static final TagInfoUndefineds EXIF_TAG_CFA_PATTERN = new TagInfoUndefineds(
523+
"CFAPattern", 0xa302, -1,
524+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
424525
public static final TagInfoShort EXIF_TAG_CUSTOM_RENDERED = new TagInfoShort(
425526
"CustomRendered", 0xa401,
426527
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
@@ -440,9 +541,18 @@ public final class ExifTagConstants {
440541
public static final TagInfoRational EXIF_TAG_DIGITAL_ZOOM_RATIO = new TagInfoRational(
441542
"DigitalZoomRatio", 0xa404,
442543
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
544+
/**
545+
* @deprecated The tag does not comply with the EXIF specification.
546+
* Use {@link #EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM} instead.
547+
* @see #EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM
548+
*/
549+
@Deprecated
443550
public static final TagInfoShort EXIF_TAG_FOCAL_LENGTH_IN_35MM_FORMAT = new TagInfoShort(
444551
"FocalLengthIn35mmFormat", 0xa405,
445552
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
553+
public static final TagInfoShort EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM = new TagInfoShort(
554+
"FocalLengthIn35mmFilm", 0xa405,
555+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
446556
public static final TagInfoShort EXIF_TAG_SCENE_CAPTURE_TYPE = new TagInfoShort(
447557
"SceneCaptureType", 0xa406,
448558
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
@@ -506,6 +616,19 @@ public final class ExifTagConstants {
506616
public static final TagInfoAscii EXIF_TAG_LENS_SERIAL_NUMBER = new TagInfoAscii(
507617
"LensSerialNumber", 0xa435, -1,
508618
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
619+
public static final TagInfoShort EXIF_TAG_COMPOSITE_IMAGE = new TagInfoShort(
620+
"CompositeImage", 0xa460,
621+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
622+
public static final short COMPOSITE_IMAGE_VALUE_UNKNOWN = 0;
623+
public static final short COMPOSITE_IMAGE_VALUE_NON_COMPOSITE = 1;
624+
public static final short COMPOSITE_IMAGE_VALUE_COMPOSITE = 2;
625+
public static final short COMPOSITE_IMAGE_VALUE_COMPOSITE_WHEN_SHOOTING = 3;
626+
public static final TagInfoShorts EXIF_TAG_SOURCE_IMAGE_NUMBER_OF_COMPOSITE_IMAGE = new TagInfoShorts(
627+
"SourceImageNumberOfCompositeImage", 0xa461, 2,
628+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
629+
public static final TagInfoUndefineds EXIF_TAG_SOURCE_EXPOSURE_TIMES_OF_COMPOSITE_IMAGE = new TagInfoUndefineds(
630+
"SourceExposureTimesOfCompositeImage", 0xa462, -1,
631+
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
509632
public static final TagInfoRational EXIF_TAG_GAMMA = new TagInfoRational(
510633
"Gamma", 0xa500,
511634
TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
@@ -598,27 +721,38 @@ public final class ExifTagConstants {
598721
EXIF_TAG_PHOTOSHOP_SETTINGS, EXIF_TAG_EXIF_OFFSET,
599722
EXIF_TAG_EXPOSURE_PROGRAM,
600723
EXIF_TAG_SPECTRAL_SENSITIVITY, EXIF_TAG_GPSINFO, EXIF_TAG_ISO,
601-
EXIF_TAG_OPTO_ELECTRIC_CONV_FACTOR,
724+
EXIF_TAG_OECF,
725+
EXIF_TAG_SENSITIVITY_TYPE,
726+
EXIF_TAG_STANDARD_OUTPUT_SENSITIVITY,
727+
EXIF_TAG_RECOMMENDED_EXPOSURE_INDEX,
602728
EXIF_TAG_LEAF_SUB_IFD,
603729
EXIF_TAG_EXIF_VERSION, EXIF_TAG_DATE_TIME_ORIGINAL,
604730
EXIF_TAG_DATE_TIME_DIGITIZED, EXIF_TAG_COMPONENTS_CONFIGURATION,
731+
EXIF_TAG_OFFSET_TIME, EXIF_TAG_OFFSET_TIME_ORIGINAL,
732+
EXIF_TAG_OFFSET_TIME_DIGITIZED,
605733
EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, EXIF_TAG_SHUTTER_SPEED_VALUE,
606734
EXIF_TAG_APERTURE_VALUE, EXIF_TAG_BRIGHTNESS_VALUE,
607-
EXIF_TAG_EXPOSURE_COMPENSATION, EXIF_TAG_MAX_APERTURE_VALUE,
735+
EXIF_TAG_EXPOSURE_BIAS_VALUE, EXIF_TAG_MAX_APERTURE_VALUE,
608736
EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_IMAGE_UNIQUE_ID,
609737
EXIF_TAG_CAMERA_OWNER_NAME,
610738
EXIF_TAG_BODY_SERIAL_NUMBER,
611739
EXIF_TAG_LENS_SPECIFICATION,
612740
EXIF_TAG_LENS_MAKE,
613741
EXIF_TAG_LENS_MODEL,
614742
EXIF_TAG_LENS_SERIAL_NUMBER,
743+
EXIF_TAG_COMPOSITE_IMAGE,
744+
EXIF_TAG_SOURCE_IMAGE_NUMBER_OF_COMPOSITE_IMAGE,
745+
EXIF_TAG_SOURCE_EXPOSURE_TIMES_OF_COMPOSITE_IMAGE,
615746
EXIF_TAG_METERING_MODE,
616747
EXIF_TAG_LIGHT_SOURCE, EXIF_TAG_FLASH, EXIF_TAG_FOCAL_LENGTH,
617748
EXIF_TAG_SUBJECT_AREA,
618749
EXIF_TAG_STO_NITS, EXIF_TAG_SUB_SEC_TIME,
619750
EXIF_TAG_SUB_SEC_TIME_ORIGINAL, EXIF_TAG_SUB_SEC_TIME_DIGITIZED,
751+
EXIF_TAG_TEMPERATURE, EXIF_TAG_HUMIDITY, EXIF_TAG_PRESSURE,
752+
EXIF_TAG_WATER_DEPTH, EXIF_TAG_ACCELERATION,
753+
EXIF_TAG_CAMERA_ELEVATION_ANGLE,
620754
EXIF_TAG_FLASHPIX_VERSION,
621-
EXIF_TAG_EXIF_IMAGE_WIDTH, EXIF_TAG_EXIF_IMAGE_LENGTH,
755+
EXIF_TAG_PIXEL_X_DIMENSION, EXIF_TAG_PIXEL_Y_DIMENSION,
622756
EXIF_TAG_RELATED_SOUND_FILE, EXIF_TAG_INTEROP_OFFSET,
623757
EXIF_TAG_FLASH_ENERGY_EXIF_IFD,
624758
EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE_2, EXIF_TAG_NOISE_2,
@@ -629,9 +763,9 @@ public final class ExifTagConstants {
629763
EXIF_TAG_IMAGE_HISTORY, EXIF_TAG_SUBJECT_LOCATION,
630764
EXIF_TAG_EXPOSURE_INDEX_EXIF_IFD, EXIF_TAG_TIFF_EPSTANDARD_ID_2,
631765
EXIF_TAG_SENSING_METHOD_EXIF_IFD, EXIF_TAG_FILE_SOURCE,
632-
EXIF_TAG_SCENE_TYPE, EXIF_TAG_CFAPATTERN, EXIF_TAG_CUSTOM_RENDERED,
766+
EXIF_TAG_SCENE_TYPE, EXIF_TAG_CFA_PATTERN, EXIF_TAG_CUSTOM_RENDERED,
633767
EXIF_TAG_EXPOSURE_MODE, EXIF_TAG_WHITE_BALANCE_1,
634-
EXIF_TAG_DIGITAL_ZOOM_RATIO, EXIF_TAG_FOCAL_LENGTH_IN_35MM_FORMAT,
768+
EXIF_TAG_DIGITAL_ZOOM_RATIO, EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM,
635769
EXIF_TAG_SCENE_CAPTURE_TYPE, EXIF_TAG_GAIN_CONTROL,
636770
EXIF_TAG_CONTRAST_1, EXIF_TAG_SATURATION_1, EXIF_TAG_SHARPNESS_1,
637771
EXIF_TAG_DEVICE_SETTING_DESCRIPTION,

0 commit comments

Comments
 (0)