View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.imaging.formats.tiff.constants;
18  
19  import java.util.Arrays;
20  import java.util.Collections;
21  import java.util.List;
22  
23  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo;
24  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii;
25  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte;
26  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes;
27  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDirectory;
28  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDouble;
29  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoGpsText;
30  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong;
31  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs;
32  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational;
33  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals;
34  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSLong;
35  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRational;
36  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort;
37  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLong;
38  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts;
39  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefined;
40  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefineds;
41  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUnknowns;
42  
43  /**
44   * References:
45   * http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
46   * http://tiki-lounge.com/~raf/tiff/fields.html
47   * http://www.awaresystems.be/imaging/tiff/tifftags.html
48   * 
49   * "Stonits": http://www.anyhere.com/gward/pixformat/tiffluv.html
50   */
51  public final class ExifTagConstants {
52  
53      public static final TagInfoAscii EXIF_TAG_INTEROPERABILITY_INDEX = new TagInfoAscii(
54              "InteroperabilityIndex", 0x0001, -1,
55              TiffDirectoryType.EXIF_DIRECTORY_INTEROP_IFD);
56      public static final TagInfoUndefined EXIF_TAG_INTEROPERABILITY_VERSION = new TagInfoUndefined(
57              "InteroperabilityVersion", 0x0002,
58              TiffDirectoryType.EXIF_DIRECTORY_INTEROP_IFD);
59      public static final TagInfoAscii EXIF_TAG_PROCESSING_SOFTWARE = new TagInfoAscii(
60              "ProcessingSoftware", 0x000b, -1,
61              TiffDirectoryType.EXIF_DIRECTORY_IFD0);
62      public static final TagInfoAscii EXIF_TAG_SOFTWARE = new TagInfoAscii(
63              "Software", 0x0131, -1,
64              TiffDirectoryType.EXIF_DIRECTORY_IFD0);
65      public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_START_IFD0 = new TagInfoLong(
66              "PreviewImageStart", 0x0111,
67              TiffDirectoryType.EXIF_DIRECTORY_IFD0, true);
68      public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_START_SUB_IFD1 = new TagInfoLong(
69              "PreviewImageStart", 0x0111,
70              TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD1, true);
71      public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD2 = new TagInfoLong(
72              "JpgFromRawStart", 0x0111,
73              TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD2, true);
74      public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_LENGTH_IFD0 = new TagInfoLong(
75              "PreviewImageLength", 0x0117,
76              TiffDirectoryType.EXIF_DIRECTORY_IFD0);
77      public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_LENGTH_SUB_IFD1 = new TagInfoLong(
78              "PreviewImageLength", 0x0117,
79              TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD1);
80      public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD2 = new TagInfoLong(
81              "JpgFromRawLength", 0x0117,
82              TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD2);
83      public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_START_MAKER_NOTES = new TagInfoLong(
84              "PreviewImageStart", 0x0201,
85              TiffDirectoryType.EXIF_DIRECTORY_MAKER_NOTES);
86      public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD = new TagInfoLong(
87              "JpgFromRawStart", 0x0201,
88              TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD, true);
89      public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_START_IFD2 = new TagInfoLong(
90              "JpgFromRawStart", 0x0201,
91              TiffDirectoryType.EXIF_DIRECTORY_IFD2, true);
92      public static final TagInfoLong EXIF_TAG_OTHER_IMAGE_START = new TagInfoLong(
93              "OtherImageStart", 0x0201,
94              TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN, true);
95      public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_LENGTH_MAKER_NOTES = new TagInfoLong(
96              "PreviewImageLength", 0x0202,
97              TiffDirectoryType.EXIF_DIRECTORY_MAKER_NOTES);
98      public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD = new TagInfoLong(
99              "JpgFromRawLength", 0x0202,
100             TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD);
101     public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_IFD2 = new TagInfoLong(
102             "JpgFromRawLength", 0x0202,
103             TiffDirectoryType.EXIF_DIRECTORY_IFD2);
104     public static final TagInfoLong EXIF_TAG_OTHER_IMAGE_LENGTH = new TagInfoLong(
105             "OtherImageLength", 0x0202,
106             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
107     public static final TagInfoBytes EXIF_TAG_APPLICATION_NOTES = new TagInfoBytes(
108             "ApplicationNotes", 0x02bc, -1,
109             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
110     public static final TagInfoUnknowns EXIF_TAG_MATTEING = new TagInfoUnknowns(
111             "Matteing", 0x80e3, -1,
112             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
113     public static final TagInfoUnknowns EXIF_TAG_DATA_TYPE = new TagInfoUnknowns(
114             "DataType", 0x80e4, -1,
115             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
116     public static final TagInfoUnknowns EXIF_TAG_IMAGE_DEPTH = new TagInfoUnknowns(
117             "ImageDepth", 0x80e5, -1,
118             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
119     public static final TagInfoUnknowns EXIF_TAG_TILE_DEPTH = new TagInfoUnknowns(
120             "TileDepth", 0x80e6, -1,
121             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
122     public static final TagInfoUnknowns EXIF_TAG_MODEL_2 = new TagInfoUnknowns(
123             "Model2", 0x827d, -1,
124             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
125     public static final TagInfoRationals EXIF_TAG_EXPOSURE_TIME = new TagInfoRationals(
126             "ExposureTime", 0x829a, -1,
127             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
128     public static final TagInfoRationals EXIF_TAG_FNUMBER = new TagInfoRationals(
129             "FNumber", 0x829d, -1,
130             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
131     // FIXME: other types?
132     public static final TagInfoLong EXIF_TAG_IPTC_NAA = new TagInfoLong(
133             "IPTC-NAA", 0x83bb,
134             TiffDirectoryType.EXIF_DIRECTORY_IFD0);
135     public static final TagInfoShorts EXIF_TAG_INTERGRAPH_PACKET_DATA = new TagInfoShorts(
136             "IntergraphPacketData", 0x847e, -1,
137             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
138     public static final TagInfoLongs EXIF_TAG_INTERGRAPH_FLAG_REGISTERS = new TagInfoLongs(
139             "IntergraphFlagRegisters", 0x847f, 16,
140             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
141     public static final TagInfoAscii EXIF_TAG_SITE = new TagInfoAscii(
142             "Site", 0x84e0, -1,
143             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
144     public static final TagInfoAscii EXIF_TAG_COLOR_SEQUENCE = new TagInfoAscii(
145             "ColorSequence", 0x84e1, -1,
146             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
147     public static final TagInfoAscii EXIF_TAG_IT8HEADER = new TagInfoAscii(
148             "IT8Header", 0x84e2, -1,
149             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
150     public static final TagInfoShort EXIF_TAG_RASTER_PADDING = new TagInfoShort(
151             "RasterPadding", 0x84e3,
152             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
153     public static final TagInfoShort EXIF_TAG_BITS_PER_RUN_LENGTH = new TagInfoShort(
154             "BitsPerRunLength", 0x84e4,
155             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
156     public static final TagInfoShort EXIF_TAG_BITS_PER_EXTENDED_RUN_LENGTH = new TagInfoShort(
157             "BitsPerExtendedRunLength", 0x84e5,
158             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
159     public static final TagInfoBytes EXIF_TAG_COLOR_TABLE = new TagInfoBytes(
160             "ColorTable", 0x84e6, -1,
161             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
162     public static final TagInfoByte EXIF_TAG_IMAGE_COLOR_INDICATOR = new TagInfoByte(
163             "ImageColorIndicator", 0x84e7,
164             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
165     public static final TagInfoByte EXIF_TAG_BACKGROUND_COLOR_INDICATOR = new TagInfoByte(
166             "BackgroundColorIndicator", 0x84e8,
167             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
168     public static final TagInfoBytes EXIF_TAG_IMAGE_COLOR_VALUE = new TagInfoBytes(
169             "ImageColorValue", 0x84e9, -1,
170             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
171     public static final TagInfoBytes EXIF_TAG_BACKGROUND_COLOR_VALUE = new TagInfoBytes(
172             "BackgroundColorValue", 0x84ea, -1,
173             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
174     public static final TagInfoBytes EXIF_TAG_PIXEL_INTENSITY_RANGE = new TagInfoBytes(
175             "PixelIntensityRange", 0x84eb, -1,
176             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
177     public static final TagInfoByte EXIF_TAG_TRANSPARENCY_INDICATOR = new TagInfoByte(
178             "TransparencyIndicator", 0x84ec,
179             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
180     public static final TagInfoAscii EXIF_TAG_COLOR_CHARACTERIZATION = new TagInfoAscii(
181             "ColorCharacterization", 0x84ed, -1,
182             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
183     public static final TagInfoShortOrLong EXIF_TAG_HCUSAGE = new TagInfoShortOrLong(
184             "HCUsage", 0x84ee, 1,
185             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
186     public static final TagInfoAscii EXIF_TAG_SEMINFO = new TagInfoAscii(
187             "SEMInfo", 0x8546, 1,
188             TiffDirectoryType.EXIF_DIRECTORY_IFD0);
189     public static final TagInfoLong EXIF_TAG_AFCP_IPTC = new TagInfoLong(
190             "AFCP_IPTC", 0x8568,
191             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
192     public static final TagInfoLong EXIF_TAG_LEAF_DATA = new TagInfoLong(
193             "LeafData", 0x8606,
194             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
195     public static final TagInfoBytes EXIF_TAG_PHOTOSHOP_SETTINGS = new TagInfoBytes(
196             "PhotoshopSettings", 0x8649, -1,
197             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
198     public static final TagInfoDirectory EXIF_TAG_EXIF_OFFSET = new TagInfoDirectory(
199             "ExifOffset", 0x8769,
200             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
201     public static final TagInfoShort EXIF_TAG_EXPOSURE_PROGRAM = new TagInfoShort(
202             "ExposureProgram", 0x8822,
203             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
204     public static final int EXPOSURE_PROGRAM_VALUE_MANUAL = 1;
205     public static final int EXPOSURE_PROGRAM_VALUE_PROGRAM_AE = 2;
206     public static final int EXPOSURE_PROGRAM_VALUE_APERTURE_PRIORITY_AE = 3;
207     public static final int EXPOSURE_PROGRAM_VALUE_SHUTTER_SPEED_PRIORITY_AE = 4;
208     public static final int EXPOSURE_PROGRAM_VALUE_CREATIVE_SLOW_SPEED = 5;
209     public static final int EXPOSURE_PROGRAM_VALUE_ACTION_HIGH_SPEED = 6;
210     public static final int EXPOSURE_PROGRAM_VALUE_PORTRAIT = 7;
211     public static final int EXPOSURE_PROGRAM_VALUE_LANDSCAPE = 8;
212     public static final TagInfoAscii EXIF_TAG_SPECTRAL_SENSITIVITY = new TagInfoAscii(
213             "SpectralSensitivity", 0x8824, -1,
214             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
215     public static final TagInfoDirectory EXIF_TAG_GPSINFO = new TagInfoDirectory(
216             "GPSInfo", 0x8825,
217             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
218     public static final TagInfoShorts EXIF_TAG_ISO = new TagInfoShorts(
219             "PhotographicSensitivity", 0x8827, -1,
220             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
221     public static final TagInfoUndefineds EXIF_TAG_OPTO_ELECTRIC_CONV_FACTOR = new TagInfoUndefineds(
222             "Opto - Electric Conv Factor", 0x8828, -1,
223             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
224     public static final TagInfoLong EXIF_TAG_LEAF_SUB_IFD = new TagInfoLong(
225             "LeafSubIFD", 0x888a,
226             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
227     public static final TagInfoUndefineds EXIF_TAG_EXIF_VERSION = new TagInfoUndefineds(
228             "ExifVersion", 0x9000, 4,
229             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
230     public static final TagInfoAscii EXIF_TAG_DATE_TIME_ORIGINAL = new TagInfoAscii(
231             "DateTimeOriginal", 0x9003, 20,
232             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
233     public static final TagInfoAscii EXIF_TAG_DATE_TIME_DIGITIZED = new TagInfoAscii(
234             "DateTimeDigitized", 0x9004, 20, TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
235     public static final TagInfoUndefineds EXIF_TAG_COMPONENTS_CONFIGURATION = new TagInfoUndefineds(
236             "ComponentsConfiguration", 0x9101, 4,
237             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
238     public static final TagInfoRational EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = new TagInfoRational(
239             "CompressedBitsPerPixel", 0x9102,
240             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
241     public static final TagInfoSRational EXIF_TAG_SHUTTER_SPEED_VALUE = new TagInfoSRational(
242             "ShutterSpeedValue", 0x9201,
243             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
244     public static final TagInfoRational EXIF_TAG_APERTURE_VALUE = new TagInfoRational(
245             "ApertureValue", 0x9202,
246             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
247     public static final TagInfoSRational EXIF_TAG_BRIGHTNESS_VALUE = new TagInfoSRational(
248             "BrightnessValue", 0x9203,
249             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
250     public static final TagInfoSRational EXIF_TAG_EXPOSURE_COMPENSATION = new TagInfoSRational(
251             "ExposureCompensation", 0x9204,
252             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
253     public static final TagInfoRational EXIF_TAG_MAX_APERTURE_VALUE = new TagInfoRational(
254             "MaxApertureValue", 0x9205,
255             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
256     public static final TagInfoRationals EXIF_TAG_SUBJECT_DISTANCE = new TagInfoRationals(
257             "Subject Distance", 0x9206, -1,
258             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
259     public static final TagInfoShort EXIF_TAG_METERING_MODE = new TagInfoShort(
260             "MeteringMode", 0x9207,
261             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
262     public static final int METERING_MODE_VALUE_AVERAGE = 1;
263     public static final int METERING_MODE_VALUE_CENTER_WEIGHTED_AVERAGE = 2;
264     public static final int METERING_MODE_VALUE_SPOT = 3;
265     public static final int METERING_MODE_VALUE_MULTI_SPOT = 4;
266     public static final int METERING_MODE_VALUE_MULTI_SEGMENT = 5;
267     public static final int METERING_MODE_VALUE_PARTIAL = 6;
268     public static final int METERING_MODE_VALUE_OTHER = 255;
269     public static final TagInfoShort EXIF_TAG_LIGHT_SOURCE = new TagInfoShort(
270             "LightSource", 0x9208,
271             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
272     public static final int LIGHT_SOURCE_VALUE_DAYLIGHT = 1;
273     public static final int LIGHT_SOURCE_VALUE_FLUORESCENT = 2;
274     public static final int LIGHT_SOURCE_VALUE_TUNGSTEN = 3;
275     public static final int LIGHT_SOURCE_VALUE_FLASH = 4;
276     public static final int LIGHT_SOURCE_VALUE_FINE_WEATHER = 9;
277     public static final int LIGHT_SOURCE_VALUE_CLOUDY = 10;
278     public static final int LIGHT_SOURCE_VALUE_SHADE = 11;
279     public static final int LIGHT_SOURCE_VALUE_DAYLIGHT_FLUORESCENT = 12;
280     public static final int LIGHT_SOURCE_VALUE_DAY_WHITE_FLUORESCENT = 13;
281     public static final int LIGHT_SOURCE_VALUE_COOL_WHITE_FLUORESCENT = 14;
282     public static final int LIGHT_SOURCE_VALUE_WHITE_FLUORESCENT = 15;
283     public static final int LIGHT_SOURCE_VALUE_STANDARD_LIGHT_A = 17;
284     public static final int LIGHT_SOURCE_VALUE_STANDARD_LIGHT_B = 18;
285     public static final int LIGHT_SOURCE_VALUE_STANDARD_LIGHT_C = 19;
286     public static final int LIGHT_SOURCE_VALUE_D55 = 20;
287     public static final int LIGHT_SOURCE_VALUE_D65 = 21;
288     public static final int LIGHT_SOURCE_VALUE_D75 = 22;
289     public static final int LIGHT_SOURCE_VALUE_D50 = 23;
290     public static final int LIGHT_SOURCE_VALUE_ISO_STUDIO_TUNGSTEN = 24;
291     public static final int LIGHT_SOURCE_VALUE_OTHER = 255;
292     public static final TagInfoShort EXIF_TAG_FLASH = new TagInfoShort(
293             "Flash", 0x9209,
294             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
295     public static final int FLASH_VALUE_NO_FLASH = 0x0;
296     public static final int FLASH_VALUE_FIRED = 0x1;
297     public static final int FLASH_VALUE_FIRED_RETURN_NOT_DETECTED = 0x5;
298     public static final int FLASH_VALUE_FIRED_RETURN_DETECTED = 0x7;
299     public static final int FLASH_VALUE_ON_DID_NOT_FIRE = 0x8;
300     public static final int FLASH_VALUE_ON = 0x9;
301     public static final int FLASH_VALUE_ON_RETURN_NOT_DETECTED = 0xd;
302     public static final int FLASH_VALUE_ON_RETURN_DETECTED = 0xf;
303     public static final int FLASH_VALUE_OFF = 0x10;
304     public static final int FLASH_VALUE_OFF_DID_NOT_FIRE_RETURN_NOT_DETECTED = 0x14;
305     public static final int FLASH_VALUE_AUTO_DID_NOT_FIRE = 0x18;
306     public static final int FLASH_VALUE_AUTO_FIRED = 0x19;
307     public static final int FLASH_VALUE_AUTO_FIRED_RETURN_NOT_DETECTED = 0x1d;
308     public static final int FLASH_VALUE_AUTO_FIRED_RETURN_DETECTED = 0x1f;
309     public static final int FLASH_VALUE_NO_FLASH_FUNCTION = 0x20;
310     public static final int FLASH_VALUE_OFF_NO_FLASH_FUNCTION = 0x30;
311     public static final int FLASH_VALUE_FIRED_RED_EYE_REDUCTION = 0x41;
312     public static final int FLASH_VALUE_FIRED_RED_EYE_REDUCTION_RETURN_NOT_DETECTED = 0x45;
313     public static final int FLASH_VALUE_FIRED_RED_EYE_REDUCTION_RETURN_DETECTED = 0x47;
314     public static final int FLASH_VALUE_ON_RED_EYE_REDUCTION = 0x49;
315     public static final int FLASH_VALUE_ON_RED_EYE_REDUCTION_RETURN_NOT_DETECTED = 0x4d;
316     public static final int FLASH_VALUE_ON_RED_EYE_REDUCTION_RETURN_DETECTED = 0x4f;
317     public static final int FLASH_VALUE_OFF_RED_EYE_REDUCTION = 0x50;
318     public static final int FLASH_VALUE_AUTO_DID_NOT_FIRE_RED_EYE_REDUCTION = 0x58;
319     public static final int FLASH_VALUE_AUTO_FIRED_RED_EYE_REDUCTION = 0x59;
320     public static final int FLASH_VALUE_AUTO_FIRED_RED_EYE_REDUCTION_RETURN_NOT_DETECTED = 0x5d;
321     public static final int FLASH_VALUE_AUTO_FIRED_RED_EYE_REDUCTION_RETURN_DETECTED = 0x5f;
322     public static final TagInfoRationals EXIF_TAG_FOCAL_LENGTH = new TagInfoRationals(
323             "FocalLength", 0x920a, -1,
324             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
325     public static final TagInfoShorts EXIF_TAG_SUBJECT_AREA = new TagInfoShorts(
326             "SubjectArea", 0x9214, -1,
327             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
328     public static final TagInfoDouble EXIF_TAG_STO_NITS = new TagInfoDouble(
329             "StoNits", 0x923f,
330             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
331     public static final TagInfoUndefineds EXIF_TAG_MAKER_NOTE = new TagInfoUndefineds(
332             "MakerNote", 0x927c, -1,
333             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
334     public static final TagInfoGpsText EXIF_TAG_USER_COMMENT = new TagInfoGpsText(
335             "UserComment", 0x9286,
336             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
337     public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME = new TagInfoAscii(
338             "SubSecTime", 0x9290, -1,
339             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
340     public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME_ORIGINAL = new TagInfoAscii(
341             "SubSecTimeOriginal", 0x9291, -1,
342             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
343     public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME_DIGITIZED = new TagInfoAscii(
344             "SubSecTimeDigitized", 0x9292, -1,
345             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
346     public static final TagInfoUndefineds EXIF_TAG_FLASHPIX_VERSION = new TagInfoUndefineds(
347             "FlashpixVersion", 0xa000, 4,
348             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
349     public static final TagInfoShort EXIF_TAG_EXIF_IMAGE_WIDTH = new TagInfoShort(
350             "ExifImageWidth", 0xa002,
351             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
352     public static final TagInfoShort EXIF_TAG_EXIF_IMAGE_LENGTH = new TagInfoShort(
353             "ExifImageLength", 0xa003,
354             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
355     public static final TagInfoAscii EXIF_TAG_RELATED_SOUND_FILE = new TagInfoAscii(
356             "RelatedSoundFile", 0xa004, 13,
357             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
358     public static final TagInfoDirectory EXIF_TAG_INTEROP_OFFSET = new TagInfoDirectory(
359             "InteropOffset", 0xa005,
360             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
361     public static final TagInfoRationals EXIF_TAG_FLASH_ENERGY_EXIF_IFD = new TagInfoRationals(
362             "FlashEnergy", 0xa20b, -1,
363             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
364     public static final TagInfoUndefineds EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE_2 = new TagInfoUndefineds(
365             "SpatialFrequencyResponse", 0xa20c, -1,
366             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
367     public static final TagInfoUnknowns EXIF_TAG_NOISE_2 = new TagInfoUnknowns(
368             "Noise", 0xa20d, -1,
369             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
370     public static final TagInfoRational EXIF_TAG_FOCAL_PLANE_XRESOLUTION_EXIF_IFD = new TagInfoRational(
371             "FocalPlaneXResolution", 0xa20e,
372             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
373     public static final TagInfoRational EXIF_TAG_FOCAL_PLANE_YRESOLUTION_EXIF_IFD = new TagInfoRational(
374             "FocalPlaneYResolution", 0xa20f,
375             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
376     public static final TagInfoShort EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD = new TagInfoShort(
377             "FocalPlaneResolutionUnit", 0xa210,
378             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
379     public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_NONE = 1;
380     public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_INCHES = 2;
381     public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_CM = 3;
382     public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_MM = 4;
383     public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_UM = 5;
384     public static final TagInfoUnknowns EXIF_TAG_IMAGE_NUMBER = new TagInfoUnknowns(
385             "ImageNumber", 0xa211, -1,
386             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
387     public static final TagInfoUnknowns EXIF_TAG_SECURITY_CLASSIFICATION = new TagInfoUnknowns(
388             "SecurityClassification", 0xa212, -1,
389             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
390     public static final TagInfoUnknowns EXIF_TAG_IMAGE_HISTORY = new TagInfoUnknowns(
391             "ImageHistory", 0xa213, -1,
392             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
393     public static final TagInfoShorts EXIF_TAG_SUBJECT_LOCATION = new TagInfoShorts(
394             "SubjectLocation", 0xa214, 2,
395             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
396     public static final TagInfoRational EXIF_TAG_EXPOSURE_INDEX_EXIF_IFD = new TagInfoRational(
397             "ExposureIndex", 0xa215,
398             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
399     public static final TagInfoUnknowns EXIF_TAG_TIFF_EPSTANDARD_ID_2 = new TagInfoUnknowns(
400             "TIFF-EPStandardID", 0xa216, -1,
401             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
402     public static final TagInfoShort EXIF_TAG_SENSING_METHOD_EXIF_IFD = new TagInfoShort(
403             "SensingMethod", 0xa217,
404             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
405     public static final int SENSING_METHOD_EXIF_IFD_VALUE_NOT_DEFINED = 1;
406     public static final int SENSING_METHOD_EXIF_IFD_VALUE_ONE_CHIP_COLOR_AREA = 2;
407     public static final int SENSING_METHOD_EXIF_IFD_VALUE_TWO_CHIP_COLOR_AREA = 3;
408     public static final int SENSING_METHOD_EXIF_IFD_VALUE_THREE_CHIP_COLOR_AREA = 4;
409     public static final int SENSING_METHOD_EXIF_IFD_VALUE_COLOR_SEQUENTIAL_AREA = 5;
410     public static final int SENSING_METHOD_EXIF_IFD_VALUE_TRILINEAR = 7;
411     public static final int SENSING_METHOD_EXIF_IFD_VALUE_COLOR_SEQUENTIAL_LINEAR = 8;
412     public static final TagInfoUndefined EXIF_TAG_FILE_SOURCE = new TagInfoUndefined(
413             "FileSource", 0xa300,
414             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
415     public static final int FILE_SOURCE_VALUE_FILM_SCANNER = 1;
416     public static final int FILE_SOURCE_VALUE_REFLECTION_PRINT_SCANNER = 2;
417     public static final int FILE_SOURCE_VALUE_DIGITAL_CAMERA = 3;
418     public static final TagInfoUndefined EXIF_TAG_SCENE_TYPE = new TagInfoUndefined(
419             "SceneType", 0xa301,
420             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
421     public static final TagInfoUndefineds EXIF_TAG_CFAPATTERN = new TagInfoUndefineds(
422             "CFAPattern", 0xa302, -1,
423             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
424     public static final TagInfoShort EXIF_TAG_CUSTOM_RENDERED = new TagInfoShort(
425             "CustomRendered", 0xa401,
426             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
427     public static final int CUSTOM_RENDERED_VALUE_NORMAL = 0;
428     public static final int CUSTOM_RENDERED_VALUE_CUSTOM = 1;
429     public static final TagInfoShort EXIF_TAG_EXPOSURE_MODE = new TagInfoShort(
430             "ExposureMode", 0xa402,
431             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
432     public static final int EXPOSURE_MODE_VALUE_AUTO = 0;
433     public static final int EXPOSURE_MODE_VALUE_MANUAL = 1;
434     public static final int EXPOSURE_MODE_VALUE_AUTO_BRACKET = 2;
435     public static final TagInfoShort EXIF_TAG_WHITE_BALANCE_1 = new TagInfoShort(
436             "WhiteBalance", 0xa403,
437             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
438     public static final int WHITE_BALANCE_1_VALUE_AUTO = 0;
439     public static final int WHITE_BALANCE_1_VALUE_MANUAL = 1;
440     public static final TagInfoRational EXIF_TAG_DIGITAL_ZOOM_RATIO = new TagInfoRational(
441             "DigitalZoomRatio", 0xa404,
442             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
443     public static final TagInfoShort EXIF_TAG_FOCAL_LENGTH_IN_35MM_FORMAT = new TagInfoShort(
444             "FocalLengthIn35mmFormat", 0xa405,
445             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
446     public static final TagInfoShort EXIF_TAG_SCENE_CAPTURE_TYPE = new TagInfoShort(
447             "SceneCaptureType", 0xa406,
448             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
449     public static final int SCENE_CAPTURE_TYPE_VALUE_STANDARD = 0;
450     public static final int SCENE_CAPTURE_TYPE_VALUE_LANDSCAPE = 1;
451     public static final int SCENE_CAPTURE_TYPE_VALUE_PORTRAIT = 2;
452     public static final int SCENE_CAPTURE_TYPE_VALUE_NIGHT = 3;
453     public static final TagInfoShort EXIF_TAG_GAIN_CONTROL = new TagInfoShort(
454             "GainControl", 0xa407,
455             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
456     public static final int GAIN_CONTROL_VALUE_NONE = 0;
457     public static final int GAIN_CONTROL_VALUE_LOW_GAIN_UP = 1;
458     public static final int GAIN_CONTROL_VALUE_HIGH_GAIN_UP = 2;
459     public static final int GAIN_CONTROL_VALUE_LOW_GAIN_DOWN = 3;
460     public static final int GAIN_CONTROL_VALUE_HIGH_GAIN_DOWN = 4;
461     public static final TagInfoShort EXIF_TAG_CONTRAST_1 = new TagInfoShort(
462             "Contrast", 0xa408,
463             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
464     public static final int CONTRAST_1_VALUE_NORMAL = 0;
465     public static final int CONTRAST_1_VALUE_LOW = 1;
466     public static final int CONTRAST_1_VALUE_HIGH = 2;
467     public static final TagInfoShort EXIF_TAG_SATURATION_1 = new TagInfoShort(
468             "Saturation", 0xa409,
469             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
470     public static final int SATURATION_1_VALUE_NORMAL = 0;
471     public static final int SATURATION_1_VALUE_LOW = 1;
472     public static final int SATURATION_1_VALUE_HIGH = 2;
473     public static final TagInfoShort EXIF_TAG_SHARPNESS_1 = new TagInfoShort(
474             "Sharpness", 0xa40a,
475             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
476     public static final int SHARPNESS_1_VALUE_NORMAL = 0;
477     public static final int SHARPNESS_1_VALUE_SOFT = 1;
478     public static final int SHARPNESS_1_VALUE_HARD = 2;
479     public static final TagInfoUndefineds EXIF_TAG_DEVICE_SETTING_DESCRIPTION = new TagInfoUndefineds(
480             "DeviceSettingDescription", 0xa40b, -1,
481             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
482     public static final TagInfoShort EXIF_TAG_SUBJECT_DISTANCE_RANGE = new TagInfoShort(
483             "SubjectDistanceRange", 0xa40c,
484             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
485     public static final int SUBJECT_DISTANCE_RANGE_VALUE_MACRO = 1;
486     public static final int SUBJECT_DISTANCE_RANGE_VALUE_CLOSE = 2;
487     public static final int SUBJECT_DISTANCE_RANGE_VALUE_DISTANT = 3;
488     public static final TagInfoAscii EXIF_TAG_IMAGE_UNIQUE_ID = new TagInfoAscii(
489             "ImageUniqueID", 0xa420, 33,
490             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
491     public static final TagInfoAscii EXIF_TAG_CAMERA_OWNER_NAME = new TagInfoAscii(
492             "CameraOwnerName", 0xa430, -1,
493             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
494     public static final TagInfoAscii EXIF_TAG_BODY_SERIAL_NUMBER = new TagInfoAscii(
495             "BodySerialNumber", 0xa431, -1,
496             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
497     public static final TagInfoRationals EXIF_TAG_LENS_SPECIFICATION = new TagInfoRationals(
498             "LensSpecification", 0xa432, 4,
499             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
500     public static final TagInfoAscii EXIF_TAG_LENS_MAKE = new TagInfoAscii(
501             "LensMake", 0xa433, -1,
502             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
503     public static final TagInfoAscii EXIF_TAG_LENS_MODEL = new TagInfoAscii(
504             "LensModel", 0xa434, -1,
505             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
506     public static final TagInfoAscii EXIF_TAG_LENS_SERIAL_NUMBER = new TagInfoAscii(
507             "LensSerialNumber", 0xa435, -1,
508             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
509     public static final TagInfoRational EXIF_TAG_GAMMA = new TagInfoRational(
510             "Gamma", 0xa500,
511             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
512     public static final TagInfoUnknowns EXIF_TAG_ANNOTATIONS = new TagInfoUnknowns(
513             "Annotations", 0xc44f, -1,
514             TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
515     public static final TagInfoUndefined EXIF_TAG_PRINT_IM = new TagInfoUndefined(
516             "PrintIM", 0xc4a5,
517             TiffDirectoryType.EXIF_DIRECTORY_IFD0);
518     public static final TagInfoSLong EXIF_TAG_OFFSET_SCHEMA = new TagInfoSLong(
519             "OffsetSchema", 0xea1d,
520             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
521     public static final TagInfoAscii EXIF_TAG_OWNER_NAME = new TagInfoAscii(
522             "OwnerName", 0xfde8, -1,
523             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
524     public static final TagInfoAscii EXIF_TAG_SERIAL_NUMBER = new TagInfoAscii(
525             "SerialNumber", 0xfde9, -1,
526             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
527     public static final TagInfoAscii EXIF_TAG_LENS = new TagInfoAscii(
528             "Lens", 0xfdea, -1,
529             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
530     public static final TagInfoAscii EXIF_TAG_RAW_FILE = new TagInfoAscii(
531             "RawFile", 0xfe4c, -1,
532             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
533     public static final TagInfoAscii EXIF_TAG_CONVERTER = new TagInfoAscii(
534             "Converter", 0xfe4d, -1,
535             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
536     public static final TagInfoAscii EXIF_TAG_WHITE_BALANCE_2 = new TagInfoAscii(
537             "WhiteBalance", 0xfe4e, -1,
538             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
539     public static final TagInfoAscii EXIF_TAG_EXPOSURE = new TagInfoAscii(
540             "Exposure", 0xfe51, -1,
541             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
542     public static final TagInfoAscii EXIF_TAG_SHADOWS = new TagInfoAscii(
543             "Shadows", 0xfe52, -1,
544             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
545     public static final TagInfoAscii EXIF_TAG_BRIGHTNESS = new TagInfoAscii(
546             "Brightness", 0xfe53, -1,
547             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
548     public static final TagInfoAscii EXIF_TAG_CONTRAST_2 = new TagInfoAscii(
549             "Contrast", 0xfe54, -1,
550             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
551     public static final TagInfoAscii EXIF_TAG_SATURATION_2 = new TagInfoAscii(
552             "Saturation", 0xfe55, -1,
553             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
554     public static final TagInfoAscii EXIF_TAG_SHARPNESS_2 = new TagInfoAscii(
555             "Sharpness", 0xfe56, -1,
556             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
557     public static final TagInfoAscii EXIF_TAG_SMOOTHNESS = new TagInfoAscii(
558             "Smoothness", 0xfe57, -1,
559             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
560     public static final TagInfoAscii EXIF_TAG_MOIRE_FILTER = new TagInfoAscii(
561             "MoireFilter", 0xfe58, -1,
562             TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
563 
564     public static final List<TagInfo> ALL_EXIF_TAGS =
565             Collections.unmodifiableList(Arrays.asList(
566                     EXIF_TAG_INTEROPERABILITY_INDEX, EXIF_TAG_INTEROPERABILITY_VERSION,
567                     EXIF_TAG_PROCESSING_SOFTWARE,
568                     EXIF_TAG_SOFTWARE,
569                     EXIF_TAG_PREVIEW_IMAGE_START_IFD0,
570                     EXIF_TAG_PREVIEW_IMAGE_START_SUB_IFD1,
571                     EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD2,
572                     EXIF_TAG_PREVIEW_IMAGE_LENGTH_IFD0,
573                     EXIF_TAG_PREVIEW_IMAGE_LENGTH_SUB_IFD1,
574                     EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD2,
575                     EXIF_TAG_PREVIEW_IMAGE_START_MAKER_NOTES,
576                     EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD,
577                     EXIF_TAG_JPG_FROM_RAW_START_IFD2, EXIF_TAG_OTHER_IMAGE_START,
578                     EXIF_TAG_PREVIEW_IMAGE_LENGTH_MAKER_NOTES,
579                     EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD,
580                     EXIF_TAG_JPG_FROM_RAW_LENGTH_IFD2, EXIF_TAG_OTHER_IMAGE_LENGTH,
581                     EXIF_TAG_APPLICATION_NOTES,
582                     EXIF_TAG_MATTEING, EXIF_TAG_DATA_TYPE,
583                     EXIF_TAG_IMAGE_DEPTH, EXIF_TAG_TILE_DEPTH, EXIF_TAG_MODEL_2,
584                     EXIF_TAG_EXPOSURE_TIME,
585                     EXIF_TAG_FNUMBER, EXIF_TAG_IPTC_NAA,
586                     EXIF_TAG_INTERGRAPH_PACKET_DATA,
587                     EXIF_TAG_INTERGRAPH_FLAG_REGISTERS,
588                     EXIF_TAG_SITE, EXIF_TAG_COLOR_SEQUENCE,
589                     EXIF_TAG_IT8HEADER, EXIF_TAG_RASTER_PADDING,
590                     EXIF_TAG_BITS_PER_RUN_LENGTH,
591                     EXIF_TAG_BITS_PER_EXTENDED_RUN_LENGTH, EXIF_TAG_COLOR_TABLE,
592                     EXIF_TAG_IMAGE_COLOR_INDICATOR,
593                     EXIF_TAG_BACKGROUND_COLOR_INDICATOR, EXIF_TAG_IMAGE_COLOR_VALUE,
594                     EXIF_TAG_BACKGROUND_COLOR_VALUE, EXIF_TAG_PIXEL_INTENSITY_RANGE,
595                     EXIF_TAG_TRANSPARENCY_INDICATOR, EXIF_TAG_COLOR_CHARACTERIZATION,
596                     EXIF_TAG_HCUSAGE, EXIF_TAG_SEMINFO, EXIF_TAG_AFCP_IPTC,
597                     EXIF_TAG_LEAF_DATA,
598                     EXIF_TAG_PHOTOSHOP_SETTINGS, EXIF_TAG_EXIF_OFFSET,
599                     EXIF_TAG_EXPOSURE_PROGRAM,
600                     EXIF_TAG_SPECTRAL_SENSITIVITY, EXIF_TAG_GPSINFO, EXIF_TAG_ISO,
601                     EXIF_TAG_OPTO_ELECTRIC_CONV_FACTOR,
602                     EXIF_TAG_LEAF_SUB_IFD,
603                     EXIF_TAG_EXIF_VERSION, EXIF_TAG_DATE_TIME_ORIGINAL,
604                     EXIF_TAG_DATE_TIME_DIGITIZED, EXIF_TAG_COMPONENTS_CONFIGURATION,
605                     EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, EXIF_TAG_SHUTTER_SPEED_VALUE,
606                     EXIF_TAG_APERTURE_VALUE, EXIF_TAG_BRIGHTNESS_VALUE,
607                     EXIF_TAG_EXPOSURE_COMPENSATION, EXIF_TAG_MAX_APERTURE_VALUE,
608                     EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_IMAGE_UNIQUE_ID,
609                     EXIF_TAG_CAMERA_OWNER_NAME,
610                     EXIF_TAG_BODY_SERIAL_NUMBER,
611                     EXIF_TAG_LENS_SPECIFICATION,
612                     EXIF_TAG_LENS_MAKE,
613                     EXIF_TAG_LENS_MODEL,
614                     EXIF_TAG_LENS_SERIAL_NUMBER,
615                     EXIF_TAG_METERING_MODE,
616                     EXIF_TAG_LIGHT_SOURCE, EXIF_TAG_FLASH, EXIF_TAG_FOCAL_LENGTH,
617                     EXIF_TAG_SUBJECT_AREA,
618                     EXIF_TAG_STO_NITS, EXIF_TAG_SUB_SEC_TIME,
619                     EXIF_TAG_SUB_SEC_TIME_ORIGINAL, EXIF_TAG_SUB_SEC_TIME_DIGITIZED,
620                     EXIF_TAG_FLASHPIX_VERSION,
621                     EXIF_TAG_EXIF_IMAGE_WIDTH, EXIF_TAG_EXIF_IMAGE_LENGTH,
622                     EXIF_TAG_RELATED_SOUND_FILE, EXIF_TAG_INTEROP_OFFSET,
623                     EXIF_TAG_FLASH_ENERGY_EXIF_IFD,
624                     EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE_2, EXIF_TAG_NOISE_2,
625                     EXIF_TAG_FOCAL_PLANE_XRESOLUTION_EXIF_IFD,
626                     EXIF_TAG_FOCAL_PLANE_YRESOLUTION_EXIF_IFD,
627                     EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD,
628                     EXIF_TAG_IMAGE_NUMBER, EXIF_TAG_SECURITY_CLASSIFICATION,
629                     EXIF_TAG_IMAGE_HISTORY, EXIF_TAG_SUBJECT_LOCATION,
630                     EXIF_TAG_EXPOSURE_INDEX_EXIF_IFD, EXIF_TAG_TIFF_EPSTANDARD_ID_2,
631                     EXIF_TAG_SENSING_METHOD_EXIF_IFD, EXIF_TAG_FILE_SOURCE,
632                     EXIF_TAG_SCENE_TYPE, EXIF_TAG_CFAPATTERN, EXIF_TAG_CUSTOM_RENDERED,
633                     EXIF_TAG_EXPOSURE_MODE, EXIF_TAG_WHITE_BALANCE_1,
634                     EXIF_TAG_DIGITAL_ZOOM_RATIO, EXIF_TAG_FOCAL_LENGTH_IN_35MM_FORMAT,
635                     EXIF_TAG_SCENE_CAPTURE_TYPE, EXIF_TAG_GAIN_CONTROL,
636                     EXIF_TAG_CONTRAST_1, EXIF_TAG_SATURATION_1, EXIF_TAG_SHARPNESS_1,
637                     EXIF_TAG_DEVICE_SETTING_DESCRIPTION,
638                     EXIF_TAG_SUBJECT_DISTANCE_RANGE, EXIF_TAG_IMAGE_UNIQUE_ID,
639                     EXIF_TAG_GAMMA,
640                     EXIF_TAG_ANNOTATIONS, EXIF_TAG_PRINT_IM,
641                     EXIF_TAG_OFFSET_SCHEMA, EXIF_TAG_OWNER_NAME,
642                     EXIF_TAG_SERIAL_NUMBER, EXIF_TAG_LENS, EXIF_TAG_RAW_FILE,
643                     EXIF_TAG_CONVERTER, EXIF_TAG_WHITE_BALANCE_2, EXIF_TAG_EXPOSURE,
644                     EXIF_TAG_SHADOWS, EXIF_TAG_BRIGHTNESS, EXIF_TAG_CONTRAST_2,
645                     EXIF_TAG_SATURATION_2, EXIF_TAG_SHARPNESS_2, EXIF_TAG_SMOOTHNESS,
646                     EXIF_TAG_MOIRE_FILTER,
647         
648                     EXIF_TAG_USER_COMMENT, //
649         
650                     EXIF_TAG_MAKER_NOTE));
651 
652     private ExifTagConstants() {
653     }
654 }