image_voodoo 0.8.7 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,7 +41,7 @@ class ImageVoodoo
41
41
 
42
42
  def self.with_bytes_impl(bytes)
43
43
  image = ImageServicesFactory.make_image(bytes)
44
- ImageVoodoo.new image, image.format.to_s.upcase
44
+ ImageVoodoo.new bytes, image, image.format.to_s.upcase
45
45
  end
46
46
 
47
47
  def from_java_bytes
@@ -0,0 +1,1641 @@
1
+ require 'xmpcore-5.1.2.jar'
2
+ require 'metadata-extractor-2.7.0.jar'
3
+
4
+ class ImageVoodoo
5
+ class Metadata
6
+ def initialize(io)
7
+ @metadata = com.drew.imaging.ImageMetadataReader.read_metadata io
8
+ end
9
+
10
+ ##
11
+ # This will return a fairly useless Directory if you ask for one
12
+ # and there is no data in the image you are requesting. The reason
13
+ # for doing this is so queries like 'md[:ISFD0][:Orientation]' can
14
+ # run and just return nil since I think this is the common case.
15
+ #
16
+ # See Directory#exists? if you want to make sure the group you are
17
+ # requesting actually exists or not.
18
+ #
19
+ def [](dirname)
20
+ dirclass = DIRECTORY_MAP[dirname.to_s]
21
+ raise ArgumentError.new "Uknown metadata group: #{dirname}" unless dirclass
22
+ dirclass.new @metadata
23
+ end
24
+
25
+ # Common metadata methods exposed as convenience functions so users
26
+ # do not need to dig around in the various directories
27
+ def make
28
+ self[:IFD0][:Make]
29
+ end
30
+
31
+ def model
32
+ self[:IFD0][:Model]
33
+ end
34
+
35
+ def orientation
36
+ self[:IFD0][:Orientation]
37
+ end
38
+
39
+ # FIXME: I wonder if this needs to fall back to try all other directories
40
+ # for Image Height
41
+ def height
42
+ self['Exif Sub IFD']['Exif Image Height']
43
+ end
44
+
45
+ def width
46
+ self['Exif Sub IFD']['Exif Image Width']
47
+ end
48
+ end
49
+
50
+ class Directory
51
+ def initialize(metadata)
52
+ @directory = metadata.get_directory self.class.directory_class.java_class
53
+ end
54
+
55
+ ##
56
+ # Does the directory you requested exist as metadata for this image.
57
+ def exists?
58
+ !!@directory
59
+ end
60
+
61
+ ##
62
+ # Return tag value for the tag specified or nil if there is none
63
+ # defined.
64
+ def [](tag_name)
65
+ return nil unless @directory
66
+ (tag_type, tag_method) = self.class::TAGS[tag_name.to_s]
67
+ raise ArgumentError.new "Unkown tag_name: #{tag_name}" unless tag_type
68
+ java_tag_type = self.class.directory_class.const_get tag_type
69
+ return nil unless @directory.contains_tag java_tag_type
70
+ @directory.__send__ tag_method, java_tag_type
71
+ end
72
+ end
73
+
74
+ class AdobeJpegDirectory < Directory
75
+ java_import com.drew.metadata.adobe.AdobeJpegDirectory
76
+
77
+ def self.directory_class
78
+ com.drew.metadata.adobe.AdobeJpegDirectory
79
+ end
80
+
81
+ TAGS = {
82
+ 'Dct Encode Version' => ['TAG_DCT_ENCODE_VERSION', :get_string],
83
+ 'App14 Flags0' => ['TAG_APP14_FLAGS0', :get_string],
84
+ 'App14 Flags1' => ['TAG_APP14_FLAGS1', :get_string],
85
+ 'Color Transform' => ['TAG_COLOR_TRANSFORM', :get_string],
86
+ }
87
+ end
88
+
89
+ class BmpHeaderDirectory < Directory
90
+ java_import com.drew.metadata.bmp.BmpHeaderDirectory
91
+
92
+ def self.directory_class
93
+ com.drew.metadata.bmp.BmpHeaderDirectory
94
+ end
95
+
96
+ TAGS = {
97
+ 'Header Size' => ['TAG_HEADER_SIZE', :get_string],
98
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
99
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
100
+ 'Colour Planes' => ['TAG_COLOUR_PLANES', :get_string],
101
+ 'Bits Per Pixel' => ['TAG_BITS_PER_PIXEL', :get_string],
102
+ 'Compression' => ['TAG_COMPRESSION', :get_int],
103
+ 'X Pixels Per Meter' => ['TAG_X_PIXELS_PER_METER', :get_string],
104
+ 'Y Pixels Per Meter' => ['TAG_Y_PIXELS_PER_METER', :get_string],
105
+ 'Palette Colour Count' => ['TAG_PALETTE_COLOUR_COUNT', :get_string],
106
+ 'Important Colour Count' => ['TAG_IMPORTANT_COLOUR_COUNT', :get_string],
107
+ }
108
+ end
109
+
110
+ class ExifIFD0Directory < Directory
111
+ java_import com.drew.metadata.exif.ExifIFD0Directory
112
+
113
+ def self.directory_class
114
+ com.drew.metadata.exif.ExifIFD0Directory
115
+ end
116
+
117
+ TAGS = {
118
+ 'Image Description' => ['TAG_IMAGE_DESCRIPTION', :get_string],
119
+ 'Make' => ['TAG_MAKE', :get_string],
120
+ 'Model' => ['TAG_MODEL', :get_string],
121
+ 'Orientation' => ['TAG_ORIENTATION', :get_int],
122
+ 'X Resolution' => ['TAG_X_RESOLUTION', :get_rational],
123
+ 'Y Resolution' => ['TAG_Y_RESOLUTION', :get_rational],
124
+ 'Resolution Unit' => ['TAG_RESOLUTION_UNIT', :get_int],
125
+ 'Software' => ['TAG_SOFTWARE', :get_string],
126
+ 'Datetime' => ['TAG_DATETIME', :get_string],
127
+ 'Artist' => ['TAG_ARTIST', :get_string],
128
+ 'White Point' => ['TAG_WHITE_POINT', :get_rational_array],
129
+ 'Primary Chromaticities' => ['TAG_PRIMARY_CHROMATICITIES', :get_rational_array],
130
+ 'Ycbcr Coefficients' => ['TAG_YCBCR_COEFFICIENTS', :get_rational_array],
131
+ 'Ycbcr Positioning' => ['TAG_YCBCR_POSITIONING', :get_int],
132
+ 'Reference Black White' => ['TAG_REFERENCE_BLACK_WHITE', :get_string],
133
+ 'Exif Sub Ifd Offset' => ['TAG_EXIF_SUB_IFD_OFFSET', :get_string],
134
+ 'Gps Info Offset' => ['TAG_GPS_INFO_OFFSET', :get_string],
135
+ 'Copyright' => ['TAG_COPYRIGHT', :get_string],
136
+ 'Time Zone Offset' => ['TAG_TIME_ZONE_OFFSET', :get_string],
137
+ 'Win Title' => ['TAG_WIN_TITLE', :get_string],
138
+ 'Win Comment' => ['TAG_WIN_COMMENT', :get_string],
139
+ 'Win Author' => ['TAG_WIN_AUTHOR', :get_string],
140
+ 'Win Keywords' => ['TAG_WIN_KEYWORDS', :get_string],
141
+ 'Win Subject' => ['TAG_WIN_SUBJECT', :get_string],
142
+ }
143
+ end
144
+
145
+ class ExifInteropDirectory < Directory
146
+ java_import com.drew.metadata.exif.ExifInteropDirectory
147
+
148
+ def self.directory_class
149
+ com.drew.metadata.exif.ExifInteropDirectory
150
+ end
151
+
152
+ TAGS = {
153
+ 'Interop Index' => ['TAG_INTEROP_INDEX', :get_string],
154
+ 'Interop Version' => ['TAG_INTEROP_VERSION', :get_string],
155
+ 'Related Image File Format' => ['TAG_RELATED_IMAGE_FILE_FORMAT', :get_string],
156
+ 'Related Image Width' => ['TAG_RELATED_IMAGE_WIDTH', :get_long],
157
+ 'Related Image Length' => ['TAG_RELATED_IMAGE_LENGTH', :get_long],
158
+ }
159
+ end
160
+
161
+ class ExifSubIFDDirectory < Directory
162
+ java_import com.drew.metadata.exif.ExifSubIFDDirectory
163
+
164
+ def self.directory_class
165
+ com.drew.metadata.exif.ExifSubIFDDirectory
166
+ end
167
+
168
+ TAGS = {
169
+ 'Aperture' => ['TAG_APERTURE', :get_string],
170
+ 'Bits Per Sample' => ['TAG_BITS_PER_SAMPLE', :get_int],
171
+ 'Photometric Interpretation' => ['TAG_PHOTOMETRIC_INTERPRETATION', :get_int],
172
+ 'Thresholding' => ['TAG_THRESHOLDING', :get_int],
173
+ 'Fill Order' => ['TAG_FILL_ORDER', :get_int],
174
+ 'Document Name' => ['TAG_DOCUMENT_NAME', :get_string],
175
+ 'Strip Offsets' => ['TAG_STRIP_OFFSETS', :get_string],
176
+ 'Samples Per Pixel' => ['TAG_SAMPLES_PER_PIXEL', :get_int],
177
+ 'Rows Per Strip' => ['TAG_ROWS_PER_STRIP', :get_long],
178
+ 'Strip Byte Counts' => ['TAG_STRIP_BYTE_COUNTS', :get_long],
179
+ 'Min Sample Value' => ['TAG_MIN_SAMPLE_VALUE', :get_int],
180
+ 'Max Sample Value' => ['TAG_MAX_SAMPLE_VALUE', :get_int],
181
+ 'Planar Configuration' => ['TAG_PLANAR_CONFIGURATION', :get_int],
182
+ 'Ycbcr Subsampling' => ['TAG_YCBCR_SUBSAMPLING', :get_string],
183
+ 'New Subfile Type' => ['TAG_NEW_SUBFILE_TYPE', :get_string],
184
+ 'Subfile Type' => ['TAG_SUBFILE_TYPE', :get_long],
185
+ 'Transfer Function' => ['TAG_TRANSFER_FUNCTION', :get_int_array],
186
+ 'Predictor' => ['TAG_PREDICTOR', :get_int],
187
+ 'Tile Width' => ['TAG_TILE_WIDTH', :get_long],
188
+ 'Tile Length' => ['TAG_TILE_LENGTH', :get_long],
189
+ 'Tile Offsets' => ['TAG_TILE_OFFSETS', :get_string],
190
+ 'Tile Byte Counts' => ['TAG_TILE_BYTE_COUNTS', :get_string],
191
+ 'Jpeg Tables' => ['TAG_JPEG_TABLES', :get_string],
192
+ 'Cfa Repeat Pattern Dim' => ['TAG_CFA_REPEAT_PATTERN_DIM', :get_string],
193
+ 'Cfa Pattern 2' => ['TAG_CFA_PATTERN_2', :get_string],
194
+ 'Battery Level' => ['TAG_BATTERY_LEVEL', :get_string],
195
+ 'Iptc Naa' => ['TAG_IPTC_NAA', :get_string],
196
+ 'Inter Color Profile' => ['TAG_INTER_COLOR_PROFILE', :get_string],
197
+ 'Spectral Sensitivity' => ['TAG_SPECTRAL_SENSITIVITY', :get_string],
198
+ 'Opto Electric Conversion Function' => ['TAG_OPTO_ELECTRIC_CONVERSION_FUNCTION', :get_string],
199
+ 'Interlace' => ['TAG_INTERLACE', :get_string],
200
+ 'Time Zone Offset' => ['TAG_TIME_ZONE_OFFSET', :get_string],
201
+ 'Self Timer Mode' => ['TAG_SELF_TIMER_MODE', :get_string],
202
+ 'Flash Energy' => ['TAG_FLASH_ENERGY', :get_string],
203
+ 'Spatial Freq Response' => ['TAG_SPATIAL_FREQ_RESPONSE', :get_string],
204
+ 'Noise' => ['TAG_NOISE', :get_string],
205
+ 'Image Number' => ['TAG_IMAGE_NUMBER', :get_string],
206
+ 'Security Classification' => ['TAG_SECURITY_CLASSIFICATION', :get_string],
207
+ 'Image History' => ['TAG_IMAGE_HISTORY', :get_string],
208
+ 'Subject Location' => ['TAG_SUBJECT_LOCATION', :get_string],
209
+ 'Exposure Index 2' => ['TAG_EXPOSURE_INDEX_2', :get_string],
210
+ 'Tiff Ep Standard Id' => ['TAG_TIFF_EP_STANDARD_ID', :get_string],
211
+ 'Flash Energy 2' => ['TAG_FLASH_ENERGY_2', :get_string],
212
+ 'Spatial Freq Response 2' => ['TAG_SPATIAL_FREQ_RESPONSE_2', :get_string],
213
+ 'Subject Location 2' => ['TAG_SUBJECT_LOCATION_2', :get_string],
214
+ 'Page Name' => ['TAG_PAGE_NAME', :get_string],
215
+ 'Exposure Time' => ['TAG_EXPOSURE_TIME', :get_rational],
216
+ 'Fnumber' => ['TAG_FNUMBER', :get_rational],
217
+ 'Exposure Program' => ['TAG_EXPOSURE_PROGRAM', :get_string],
218
+ 'Iso Equivalent' => ['TAG_ISO_EQUIVALENT', :get_string],
219
+ 'Exif Version' => ['TAG_EXIF_VERSION', :get_string],
220
+ 'Datetime Original' => ['TAG_DATETIME_ORIGINAL', :get_string],
221
+ 'Datetime Digitized' => ['TAG_DATETIME_DIGITIZED', :get_string],
222
+ 'Components Configuration' => ['TAG_COMPONENTS_CONFIGURATION', :get_string],
223
+ 'Compressed Average Bits Per Pixel' => ['TAG_COMPRESSED_AVERAGE_BITS_PER_PIXEL', :get_string],
224
+ 'Shutter Speed' => ['TAG_SHUTTER_SPEED', :get_string],
225
+ 'Brightness Value' => ['TAG_BRIGHTNESS_VALUE', :get_string],
226
+ 'Exposure Bias' => ['TAG_EXPOSURE_BIAS', :get_string],
227
+ 'Max Aperture' => ['TAG_MAX_APERTURE', :get_string],
228
+ 'Subject Distance' => ['TAG_SUBJECT_DISTANCE', :get_string],
229
+ 'Metering Mode' => ['TAG_METERING_MODE', :get_string],
230
+ 'Light Source' => ['TAG_LIGHT_SOURCE', :get_string],
231
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
232
+ 'Flash' => ['TAG_FLASH', :get_string],
233
+ 'Focal Length' => ['TAG_FOCAL_LENGTH', :get_string],
234
+ 'Makernote' => ['TAG_MAKERNOTE', :get_string],
235
+ 'User Comment' => ['TAG_USER_COMMENT', :get_string],
236
+ 'Subsecond Time' => ['TAG_SUBSECOND_TIME', :get_string],
237
+ 'Subsecond Time Original' => ['TAG_SUBSECOND_TIME_ORIGINAL', :get_string],
238
+ 'Subsecond Time Digitized' => ['TAG_SUBSECOND_TIME_DIGITIZED', :get_string],
239
+ 'Flashpix Version' => ['TAG_FLASHPIX_VERSION', :get_string],
240
+ 'Color Space' => ['TAG_COLOR_SPACE', :get_string],
241
+ 'Exif Image Width' => ['TAG_EXIF_IMAGE_WIDTH', :get_long],
242
+ 'Exif Image Height' => ['TAG_EXIF_IMAGE_HEIGHT', :get_long],
243
+ 'Related Sound File' => ['TAG_RELATED_SOUND_FILE', :get_string],
244
+ 'Interop Offset' => ['TAG_INTEROP_OFFSET', :get_string],
245
+ 'Focal Plane X Resolution' => ['TAG_FOCAL_PLANE_X_RESOLUTION', :get_string],
246
+ 'Focal Plane Y Resolution' => ['TAG_FOCAL_PLANE_Y_RESOLUTION', :get_string],
247
+ 'Focal Plane Resolution Unit' => ['TAG_FOCAL_PLANE_RESOLUTION_UNIT', :get_string],
248
+ 'Exposure Index' => ['TAG_EXPOSURE_INDEX', :get_string],
249
+ 'Sensing Method' => ['TAG_SENSING_METHOD', :get_string],
250
+ 'File Source' => ['TAG_FILE_SOURCE', :get_string],
251
+ 'Scene Type' => ['TAG_SCENE_TYPE', :get_string],
252
+ 'Cfa Pattern' => ['TAG_CFA_PATTERN', :get_string],
253
+ 'Custom Rendered' => ['TAG_CUSTOM_RENDERED', :get_string],
254
+ 'Exposure Mode' => ['TAG_EXPOSURE_MODE', :get_string],
255
+ 'White Balance Mode' => ['TAG_WHITE_BALANCE_MODE', :get_string],
256
+ 'Digital Zoom Ratio' => ['TAG_DIGITAL_ZOOM_RATIO', :get_string],
257
+ '35mm Film Equiv Focal Length' => ['TAG_35MM_FILM_EQUIV_FOCAL_LENGTH', :get_string],
258
+ 'Scene Capture Type' => ['TAG_SCENE_CAPTURE_TYPE', :get_string],
259
+ 'Gain Control' => ['TAG_GAIN_CONTROL', :get_string],
260
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
261
+ 'Saturation' => ['TAG_SATURATION', :get_string],
262
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
263
+ 'Device Setting Description' => ['TAG_DEVICE_SETTING_DESCRIPTION', :get_string],
264
+ 'Subject Distance Range' => ['TAG_SUBJECT_DISTANCE_RANGE', :get_string],
265
+ 'Image Unique Id' => ['TAG_IMAGE_UNIQUE_ID', :get_string],
266
+ 'Camera Owner Name' => ['TAG_CAMERA_OWNER_NAME', :get_string],
267
+ 'Body Serial Number' => ['TAG_BODY_SERIAL_NUMBER', :get_string],
268
+ 'Lens Specification' => ['TAG_LENS_SPECIFICATION', :get_string],
269
+ 'Lens Make' => ['TAG_LENS_MAKE', :get_string],
270
+ 'Lens Model' => ['TAG_LENS_MODEL', :get_string],
271
+ 'Lens Serial Number' => ['TAG_LENS_SERIAL_NUMBER', :get_string],
272
+ 'Gamma' => ['TAG_GAMMA', :get_string],
273
+ 'Lens' => ['TAG_LENS', :get_string],
274
+ }
275
+ end
276
+
277
+ class ExifThumbnailDirectory < Directory
278
+ java_import com.drew.metadata.exif.ExifThumbnailDirectory
279
+
280
+ def self.directory_class
281
+ com.drew.metadata.exif.ExifThumbnailDirectory
282
+ end
283
+
284
+ TAGS = {
285
+ 'Thumbnail Image Width' => ['TAG_THUMBNAIL_IMAGE_WIDTH', :get_long],
286
+ 'Thumbnail Image Height' => ['TAG_THUMBNAIL_IMAGE_HEIGHT', :get_long],
287
+ 'Bits Per Sample' => ['TAG_BITS_PER_SAMPLE', :get_string],
288
+ 'Thumbnail Compression' => ['TAG_THUMBNAIL_COMPRESSION', :get_string],
289
+ 'Photometric Interpretation' => ['TAG_PHOTOMETRIC_INTERPRETATION', :get_string],
290
+ 'Strip Offsets' => ['TAG_STRIP_OFFSETS', :get_string],
291
+ 'Orientation' => ['TAG_ORIENTATION', :get_string],
292
+ 'Samples Per Pixel' => ['TAG_SAMPLES_PER_PIXEL', :get_string],
293
+ 'Rows Per Strip' => ['TAG_ROWS_PER_STRIP', :get_string],
294
+ 'Strip Byte Counts' => ['TAG_STRIP_BYTE_COUNTS', :get_string],
295
+ 'X Resolution' => ['TAG_X_RESOLUTION', :get_long],
296
+ 'Y Resolution' => ['TAG_Y_RESOLUTION', :get_long],
297
+ 'Planar Configuration' => ['TAG_PLANAR_CONFIGURATION', :get_string],
298
+ 'Resolution Unit' => ['TAG_RESOLUTION_UNIT', :get_string],
299
+ 'Thumbnail Offset' => ['TAG_THUMBNAIL_OFFSET', :get_long],
300
+ 'Thumbnail Length' => ['TAG_THUMBNAIL_LENGTH', :get_long],
301
+ 'Ycbcr Coefficients' => ['TAG_YCBCR_COEFFICIENTS', :get_rational_array],
302
+ 'Ycbcr Subsampling' => ['TAG_YCBCR_SUBSAMPLING', :get_int_array],
303
+ 'Ycbcr Positioning' => ['TAG_YCBCR_POSITIONING', :get_int],
304
+ 'Reference Black White' => ['TAG_REFERENCE_BLACK_WHITE', :get_rational_array],
305
+ }
306
+ end
307
+
308
+ class GpsDirectory < Directory
309
+ java_import com.drew.metadata.exif.GpsDirectory
310
+
311
+ def self.directory_class
312
+ com.drew.metadata.exif.GpsDirectory
313
+ end
314
+
315
+ TAGS = {
316
+ 'Version Id' => ['TAG_VERSION_ID', :get_int_array],
317
+ 'Latitude Ref' => ['TAG_LATITUDE_REF', :get_string],
318
+ 'Latitude' => ['TAG_LATITUDE', :get_string],
319
+ 'Longitude Ref' => ['TAG_LONGITUDE_REF', :get_string],
320
+ 'Longitude' => ['TAG_LONGITUDE', :get_string],
321
+ 'Altitude Ref' => ['TAG_ALTITUDE_REF', :get_string],
322
+ 'Altitude' => ['TAG_ALTITUDE', :get_string],
323
+ 'Time Stamp' => ['TAG_TIME_STAMP', :get_string],
324
+ 'Satellites' => ['TAG_SATELLITES', :get_string],
325
+ 'Status' => ['TAG_STATUS', :get_string],
326
+ 'Measure Mode' => ['TAG_MEASURE_MODE', :get_string],
327
+ 'Dop' => ['TAG_DOP', :get_string],
328
+ 'Speed Ref' => ['TAG_SPEED_REF', :get_string],
329
+ 'Speed' => ['TAG_SPEED', :get_string],
330
+ 'Track Ref' => ['TAG_TRACK_REF', :get_string],
331
+ 'Track' => ['TAG_TRACK', :get_string],
332
+ 'Img Direction Ref' => ['TAG_IMG_DIRECTION_REF', :get_string],
333
+ 'Img Direction' => ['TAG_IMG_DIRECTION', :get_string],
334
+ 'Map Datum' => ['TAG_MAP_DATUM', :get_string],
335
+ 'Dest Latitude Ref' => ['TAG_DEST_LATITUDE_REF', :get_string],
336
+ 'Dest Latitude' => ['TAG_DEST_LATITUDE', :get_string],
337
+ 'Dest Longitude Ref' => ['TAG_DEST_LONGITUDE_REF', :get_string],
338
+ 'Dest Longitude' => ['TAG_DEST_LONGITUDE', :get_string],
339
+ 'Dest Bearing Ref' => ['TAG_DEST_BEARING_REF', :get_string],
340
+ 'Dest Bearing' => ['TAG_DEST_BEARING', :get_string],
341
+ 'Dest Distance Ref' => ['TAG_DEST_DISTANCE_REF', :get_string],
342
+ 'Dest Distance' => ['TAG_DEST_DISTANCE', :get_string],
343
+ 'Processing Method' => ['TAG_PROCESSING_METHOD', :get_string],
344
+ 'Area Information' => ['TAG_AREA_INFORMATION', :get_string],
345
+ 'Date Stamp' => ['TAG_DATE_STAMP', :get_string],
346
+ 'Differential' => ['TAG_DIFFERENTIAL', :get_string],
347
+ }
348
+ end
349
+
350
+ class CanonMakernoteDirectory < Directory
351
+ java_import com.drew.metadata.exif.makernotes.CanonMakernoteDirectory
352
+
353
+ def self.directory_class
354
+ com.drew.metadata.exif.makernotes.CanonMakernoteDirectory
355
+ end
356
+
357
+ TAGS = {
358
+ 'Canon Image Type' => ['TAG_CANON_IMAGE_TYPE', :get_string],
359
+ 'Canon Firmware Version' => ['TAG_CANON_FIRMWARE_VERSION', :get_string],
360
+ 'Canon Image Number' => ['TAG_CANON_IMAGE_NUMBER', :get_string],
361
+ 'Canon Owner Name' => ['TAG_CANON_OWNER_NAME', :get_string],
362
+ 'Canon Serial Number' => ['TAG_CANON_SERIAL_NUMBER', :get_string],
363
+ 'Camera Info Array' => ['TAG_CAMERA_INFO_ARRAY', :get_string],
364
+ 'Canon File Length' => ['TAG_CANON_FILE_LENGTH', :get_string],
365
+ 'Canon Custom Functions Array' => ['TAG_CANON_CUSTOM_FUNCTIONS_ARRAY', :get_string],
366
+ 'Model Id' => ['TAG_MODEL_ID', :get_string],
367
+ 'Movie Info Array' => ['TAG_MOVIE_INFO_ARRAY', :get_string],
368
+ 'Thumbnail Image Valid Area' => ['TAG_THUMBNAIL_IMAGE_VALID_AREA', :get_string],
369
+ 'Serial Number Format' => ['TAG_SERIAL_NUMBER_FORMAT', :get_string],
370
+ 'Super Macro' => ['TAG_SUPER_MACRO', :get_string],
371
+ 'Date Stamp Mode' => ['TAG_DATE_STAMP_MODE', :get_string],
372
+ 'My Colors' => ['TAG_MY_COLORS', :get_string],
373
+ 'Firmware Revision' => ['TAG_FIRMWARE_REVISION', :get_string],
374
+ 'Categories' => ['TAG_CATEGORIES', :get_string],
375
+ 'Face Detect Array 1' => ['TAG_FACE_DETECT_ARRAY_1', :get_string],
376
+ 'Face Detect Array 2' => ['TAG_FACE_DETECT_ARRAY_2', :get_string],
377
+ 'Af Info Array 2' => ['TAG_AF_INFO_ARRAY_2', :get_string],
378
+ 'Image Unique Id' => ['TAG_IMAGE_UNIQUE_ID', :get_string],
379
+ 'Raw Data Offset' => ['TAG_RAW_DATA_OFFSET', :get_string],
380
+ 'Original Decision Data Offset' => ['TAG_ORIGINAL_DECISION_DATA_OFFSET', :get_string],
381
+ 'Custom Functions 1d Array' => ['TAG_CUSTOM_FUNCTIONS_1D_ARRAY', :get_string],
382
+ 'Personal Functions Array' => ['TAG_PERSONAL_FUNCTIONS_ARRAY', :get_string],
383
+ 'Personal Function Values Array' => ['TAG_PERSONAL_FUNCTION_VALUES_ARRAY', :get_string],
384
+ 'File Info Array' => ['TAG_FILE_INFO_ARRAY', :get_string],
385
+ 'Af Points In Focus 1d' => ['TAG_AF_POINTS_IN_FOCUS_1D', :get_string],
386
+ 'Lens Model' => ['TAG_LENS_MODEL', :get_string],
387
+ 'Serial Info Array' => ['TAG_SERIAL_INFO_ARRAY', :get_string],
388
+ 'Dust Removal Data' => ['TAG_DUST_REMOVAL_DATA', :get_string],
389
+ 'Crop Info' => ['TAG_CROP_INFO', :get_string],
390
+ 'Custom Functions Array 2' => ['TAG_CUSTOM_FUNCTIONS_ARRAY_2', :get_string],
391
+ 'Aspect Info Array' => ['TAG_ASPECT_INFO_ARRAY', :get_string],
392
+ 'Processing Info Array' => ['TAG_PROCESSING_INFO_ARRAY', :get_string],
393
+ 'Tone Curve Table' => ['TAG_TONE_CURVE_TABLE', :get_string],
394
+ 'Sharpness Table' => ['TAG_SHARPNESS_TABLE', :get_string],
395
+ 'Sharpness Freq Table' => ['TAG_SHARPNESS_FREQ_TABLE', :get_string],
396
+ 'White Balance Table' => ['TAG_WHITE_BALANCE_TABLE', :get_string],
397
+ 'Color Balance Array' => ['TAG_COLOR_BALANCE_ARRAY', :get_string],
398
+ 'Measured Color Array' => ['TAG_MEASURED_COLOR_ARRAY', :get_string],
399
+ 'Color Temperature' => ['TAG_COLOR_TEMPERATURE', :get_string],
400
+ 'Canon Flags Array' => ['TAG_CANON_FLAGS_ARRAY', :get_string],
401
+ 'Modified Info Array' => ['TAG_MODIFIED_INFO_ARRAY', :get_string],
402
+ 'Tone Curve Matching' => ['TAG_TONE_CURVE_MATCHING', :get_string],
403
+ 'White Balance Matching' => ['TAG_WHITE_BALANCE_MATCHING', :get_string],
404
+ 'Color Space' => ['TAG_COLOR_SPACE', :get_string],
405
+ 'Preview Image Info Array' => ['TAG_PREVIEW_IMAGE_INFO_ARRAY', :get_string],
406
+ 'Vrd Offset' => ['TAG_VRD_OFFSET', :get_string],
407
+ 'Sensor Info Array' => ['TAG_SENSOR_INFO_ARRAY', :get_string],
408
+ 'Color Data Array 2' => ['TAG_COLOR_DATA_ARRAY_2', :get_string],
409
+ 'Crw Param' => ['TAG_CRW_PARAM', :get_string],
410
+ 'Color Info Array 2' => ['TAG_COLOR_INFO_ARRAY_2', :get_string],
411
+ 'Black Level' => ['TAG_BLACK_LEVEL', :get_string],
412
+ 'Custom Picture Style File Name' => ['TAG_CUSTOM_PICTURE_STYLE_FILE_NAME', :get_string],
413
+ 'Color Info Array' => ['TAG_COLOR_INFO_ARRAY', :get_string],
414
+ 'Vignetting Correction Array 1' => ['TAG_VIGNETTING_CORRECTION_ARRAY_1', :get_string],
415
+ 'Vignetting Correction Array 2' => ['TAG_VIGNETTING_CORRECTION_ARRAY_2', :get_string],
416
+ 'Lighting Optimizer Array' => ['TAG_LIGHTING_OPTIMIZER_ARRAY', :get_string],
417
+ 'Lens Info Array' => ['TAG_LENS_INFO_ARRAY', :get_string],
418
+ 'Ambiance Info Array' => ['TAG_AMBIANCE_INFO_ARRAY', :get_string],
419
+ 'Filter Info Array' => ['TAG_FILTER_INFO_ARRAY', :get_string],
420
+ 'Macro Mode' => ['TAG_MACRO_MODE', :get_string],
421
+ 'Self Timer Delay' => ['TAG_SELF_TIMER_DELAY', :get_string],
422
+ 'Quality' => ['TAG_QUALITY', :get_string],
423
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
424
+ 'Continuous Drive Mode' => ['TAG_CONTINUOUS_DRIVE_MODE', :get_string],
425
+ 'Unknown 2' => ['TAG_UNKNOWN_2', :get_string],
426
+ 'Focus Mode 1' => ['TAG_FOCUS_MODE_1', :get_string],
427
+ 'Unknown 3' => ['TAG_UNKNOWN_3', :get_string],
428
+ 'Unknown 4' => ['TAG_UNKNOWN_4', :get_string],
429
+ 'Image Size' => ['TAG_IMAGE_SIZE', :get_string],
430
+ 'Easy Shooting Mode' => ['TAG_EASY_SHOOTING_MODE', :get_string],
431
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
432
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
433
+ 'Saturation' => ['TAG_SATURATION', :get_string],
434
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
435
+ 'Iso' => ['TAG_ISO', :get_int_array],
436
+ 'Metering Mode' => ['TAG_METERING_MODE', :get_string],
437
+ 'Focus Type' => ['TAG_FOCUS_TYPE', :get_string],
438
+ 'Af Point Selected' => ['TAG_AF_POINT_SELECTED', :get_string],
439
+ 'Exposure Mode' => ['TAG_EXPOSURE_MODE', :get_string],
440
+ 'Unknown 7' => ['TAG_UNKNOWN_7', :get_string],
441
+ 'Unknown 8' => ['TAG_UNKNOWN_8', :get_string],
442
+ 'Long Focal Length' => ['TAG_LONG_FOCAL_LENGTH', :get_string],
443
+ 'Short Focal Length' => ['TAG_SHORT_FOCAL_LENGTH', :get_string],
444
+ 'Focal Units Per Mm' => ['TAG_FOCAL_UNITS_PER_MM', :get_string],
445
+ 'Unknown 9' => ['TAG_UNKNOWN_9', :get_string],
446
+ 'Unknown 10' => ['TAG_UNKNOWN_10', :get_string],
447
+ 'Flash Activity' => ['TAG_FLASH_ACTIVITY', :get_string],
448
+ 'Flash Details' => ['TAG_FLASH_DETAILS', :get_string],
449
+ 'Unknown 12' => ['TAG_UNKNOWN_12', :get_string],
450
+ 'Unknown 13' => ['TAG_UNKNOWN_13', :get_string],
451
+ 'Focus Mode 2' => ['TAG_FOCUS_MODE_2', :get_string],
452
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
453
+ 'Sequence Number' => ['TAG_SEQUENCE_NUMBER', :get_string],
454
+ 'Af Point Used' => ['TAG_AF_POINT_USED', :get_string],
455
+ 'Flash Bias' => ['TAG_FLASH_BIAS', :get_string],
456
+ 'Auto Exposure Bracketing' => ['TAG_AUTO_EXPOSURE_BRACKETING', :get_string],
457
+ 'Aeb Bracket Value' => ['TAG_AEB_BRACKET_VALUE', :get_string],
458
+ 'Subject Distance' => ['TAG_SUBJECT_DISTANCE', :get_string],
459
+ 'Auto Iso' => ['TAG_AUTO_ISO', :get_string],
460
+ 'Base Iso' => ['TAG_BASE_ISO', :get_string],
461
+ 'Measured Ev' => ['TAG_MEASURED_EV', :get_string],
462
+ 'Target Aperture' => ['TAG_TARGET_APERTURE', :get_string],
463
+ 'Target Exposure Time' => ['TAG_TARGET_EXPOSURE_TIME', :get_string],
464
+ 'Exposure Compensation' => ['TAG_EXPOSURE_COMPENSATION', :get_string],
465
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
466
+ 'Slow Shutter' => ['TAG_SLOW_SHUTTER', :get_string],
467
+ 'Sequence Number' => ['TAG_SEQUENCE_NUMBER', :get_string],
468
+ 'Optical Zoom Code' => ['TAG_OPTICAL_ZOOM_CODE', :get_string],
469
+ 'Camera Temperature' => ['TAG_CAMERA_TEMPERATURE', :get_string],
470
+ 'Flash Guide Number' => ['TAG_FLASH_GUIDE_NUMBER', :get_string],
471
+ 'Af Points In Focus' => ['TAG_AF_POINTS_IN_FOCUS', :get_string],
472
+ 'Flash Exposure Bracketing' => ['TAG_FLASH_EXPOSURE_BRACKETING', :get_string],
473
+ 'Auto Exposure Bracketing' => ['TAG_AUTO_EXPOSURE_BRACKETING', :get_string],
474
+ 'Aeb Bracket Value' => ['TAG_AEB_BRACKET_VALUE', :get_string],
475
+ 'Control Mode' => ['TAG_CONTROL_MODE', :get_string],
476
+ 'Focus Distance Upper' => ['TAG_FOCUS_DISTANCE_UPPER', :get_string],
477
+ 'Focus Distance Lower' => ['TAG_FOCUS_DISTANCE_LOWER', :get_string],
478
+ 'F Number' => ['TAG_F_NUMBER', :get_string],
479
+ 'Exposure Time' => ['TAG_EXPOSURE_TIME', :get_string],
480
+ 'Measured Ev 2' => ['TAG_MEASURED_EV_2', :get_string],
481
+ 'Bulb Duration' => ['TAG_BULB_DURATION', :get_string],
482
+ 'Camera Type' => ['TAG_CAMERA_TYPE', :get_string],
483
+ 'Auto Rotate' => ['TAG_AUTO_ROTATE', :get_string],
484
+ 'Nd Filter' => ['TAG_ND_FILTER', :get_string],
485
+ 'Self Timer 2' => ['TAG_SELF_TIMER_2', :get_string],
486
+ 'Flash Output' => ['TAG_FLASH_OUTPUT', :get_string],
487
+ 'Panorama Frame Number' => ['TAG_PANORAMA_FRAME_NUMBER', :get_string],
488
+ 'Panorama Direction' => ['TAG_PANORAMA_DIRECTION', :get_string],
489
+ 'Num Af Points' => ['TAG_NUM_AF_POINTS', :get_string],
490
+ 'Valid Af Points' => ['TAG_VALID_AF_POINTS', :get_string],
491
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
492
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
493
+ 'Af Image Width' => ['TAG_AF_IMAGE_WIDTH', :get_long],
494
+ 'Af Image Height' => ['TAG_AF_IMAGE_HEIGHT', :get_long],
495
+ 'Af Area Width' => ['TAG_AF_AREA_WIDTH', :get_string],
496
+ 'Af Area Height' => ['TAG_AF_AREA_HEIGHT', :get_string],
497
+ 'Af Area X Positions' => ['TAG_AF_AREA_X_POSITIONS', :get_string],
498
+ 'Af Area Y Positions' => ['TAG_AF_AREA_Y_POSITIONS', :get_string],
499
+ 'Af Points In Focus' => ['TAG_AF_POINTS_IN_FOCUS', :get_string],
500
+ 'Primary Af Point 1' => ['TAG_PRIMARY_AF_POINT_1', :get_string],
501
+ 'Primary Af Point 2' => ['TAG_PRIMARY_AF_POINT_2', :get_string],
502
+ 'Canon Custom Function Long Exposure Noise Reduction' => ['TAG_CANON_CUSTOM_FUNCTION_LONG_EXPOSURE_NOISE_REDUCTION', :get_string],
503
+ 'Canon Custom Function Shutter Auto Exposure Lock Buttons' => ['TAG_CANON_CUSTOM_FUNCTION_SHUTTER_AUTO_EXPOSURE_LOCK_BUTTONS', :get_string],
504
+ 'Canon Custom Function Mirror Lockup' => ['TAG_CANON_CUSTOM_FUNCTION_MIRROR_LOCKUP', :get_string],
505
+ 'Canon Custom Function Tv Av And Exposure Level' => ['TAG_CANON_CUSTOM_FUNCTION_TV_AV_AND_EXPOSURE_LEVEL', :get_string],
506
+ 'Canon Custom Function Af Assist Light' => ['TAG_CANON_CUSTOM_FUNCTION_AF_ASSIST_LIGHT', :get_string],
507
+ 'Canon Custom Function Shutter Speed In Av Mode' => ['TAG_CANON_CUSTOM_FUNCTION_SHUTTER_SPEED_IN_AV_MODE', :get_string],
508
+ 'Canon Custom Function Bracketing' => ['TAG_CANON_CUSTOM_FUNCTION_BRACKETING', :get_string],
509
+ 'Canon Custom Function Shutter Curtain Sync' => ['TAG_CANON_CUSTOM_FUNCTION_SHUTTER_CURTAIN_SYNC', :get_string],
510
+ 'Canon Custom Function Af Stop' => ['TAG_CANON_CUSTOM_FUNCTION_AF_STOP', :get_string],
511
+ 'Canon Custom Function Fill Flash Reduction' => ['TAG_CANON_CUSTOM_FUNCTION_FILL_FLASH_REDUCTION', :get_string],
512
+ 'Canon Custom Function Menu Button Return' => ['TAG_CANON_CUSTOM_FUNCTION_MENU_BUTTON_RETURN', :get_string],
513
+ 'Canon Custom Function Set Button Function' => ['TAG_CANON_CUSTOM_FUNCTION_SET_BUTTON_FUNCTION', :get_string],
514
+ 'Canon Custom Function Sensor Cleaning' => ['TAG_CANON_CUSTOM_FUNCTION_SENSOR_CLEANING', :get_string],
515
+ }
516
+ end
517
+
518
+ class CasioType1MakernoteDirectory < Directory
519
+ java_import com.drew.metadata.exif.makernotes.CasioType1MakernoteDirectory
520
+
521
+ def self.directory_class
522
+ com.drew.metadata.exif.makernotes.CasioType1MakernoteDirectory
523
+ end
524
+
525
+ TAGS = {
526
+ 'Recording Mode' => ['TAG_RECORDING_MODE', :get_string],
527
+ 'Quality' => ['TAG_QUALITY', :get_string],
528
+ 'Focusing Mode' => ['TAG_FOCUSING_MODE', :get_string],
529
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
530
+ 'Flash Intensity' => ['TAG_FLASH_INTENSITY', :get_string],
531
+ 'Object Distance' => ['TAG_OBJECT_DISTANCE', :get_string],
532
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
533
+ 'Unknown 1' => ['TAG_UNKNOWN_1', :get_string],
534
+ 'Unknown 2' => ['TAG_UNKNOWN_2', :get_string],
535
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
536
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
537
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
538
+ 'Saturation' => ['TAG_SATURATION', :get_string],
539
+ 'Unknown 3' => ['TAG_UNKNOWN_3', :get_string],
540
+ 'Unknown 4' => ['TAG_UNKNOWN_4', :get_string],
541
+ 'Unknown 5' => ['TAG_UNKNOWN_5', :get_string],
542
+ 'Unknown 6' => ['TAG_UNKNOWN_6', :get_string],
543
+ 'Unknown 7' => ['TAG_UNKNOWN_7', :get_string],
544
+ 'Unknown 8' => ['TAG_UNKNOWN_8', :get_string],
545
+ 'Ccd Sensitivity' => ['TAG_CCD_SENSITIVITY', :get_string],
546
+ }
547
+ end
548
+
549
+ class CasioType2MakernoteDirectory < Directory
550
+ java_import com.drew.metadata.exif.makernotes.CasioType2MakernoteDirectory
551
+
552
+ def self.directory_class
553
+ com.drew.metadata.exif.makernotes.CasioType2MakernoteDirectory
554
+ end
555
+
556
+ TAGS = {
557
+ 'Thumbnail Dimensions' => ['TAG_THUMBNAIL_DIMENSIONS', :get_string],
558
+ 'Thumbnail Size' => ['TAG_THUMBNAIL_SIZE', :get_long],
559
+ 'Thumbnail Offset' => ['TAG_THUMBNAIL_OFFSET', :get_long],
560
+ 'Quality Mode' => ['TAG_QUALITY_MODE', :get_string],
561
+ 'Image Size' => ['TAG_IMAGE_SIZE', :get_string],
562
+ 'Focus Mode 1' => ['TAG_FOCUS_MODE_1', :get_string],
563
+ 'Iso Sensitivity' => ['TAG_ISO_SENSITIVITY', :get_int],
564
+ 'White Balance 1' => ['TAG_WHITE_BALANCE_1', :get_string],
565
+ 'Focal Length' => ['TAG_FOCAL_LENGTH', :get_string],
566
+ 'Saturation' => ['TAG_SATURATION', :get_string],
567
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
568
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
569
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
570
+ 'Preview Thumbnail' => ['TAG_PREVIEW_THUMBNAIL', :get_string],
571
+ 'White Balance Bias' => ['TAG_WHITE_BALANCE_BIAS', :get_string],
572
+ 'White Balance 2' => ['TAG_WHITE_BALANCE_2', :get_string],
573
+ 'Object Distance' => ['TAG_OBJECT_DISTANCE', :get_string],
574
+ 'Flash Distance' => ['TAG_FLASH_DISTANCE', :get_string],
575
+ 'Record Mode' => ['TAG_RECORD_MODE', :get_string],
576
+ 'Self Timer' => ['TAG_SELF_TIMER', :get_string],
577
+ 'Quality' => ['TAG_QUALITY', :get_string],
578
+ 'Focus Mode 2' => ['TAG_FOCUS_MODE_2', :get_string],
579
+ 'Time Zone' => ['TAG_TIME_ZONE', :get_string],
580
+ 'Bestshot Mode' => ['TAG_BESTSHOT_MODE', :get_string],
581
+ 'Ccd Iso Sensitivity' => ['TAG_CCD_ISO_SENSITIVITY', :get_int],
582
+ 'Colour Mode' => ['TAG_COLOUR_MODE', :get_string],
583
+ 'Enhancement' => ['TAG_ENHANCEMENT', :get_string],
584
+ 'Filter' => ['TAG_FILTER', :get_string],
585
+ }
586
+ end
587
+
588
+ class FujifilmMakernoteDirectory < Directory
589
+ java_import com.drew.metadata.exif.makernotes.FujifilmMakernoteDirectory
590
+
591
+ def self.directory_class
592
+ com.drew.metadata.exif.makernotes.FujifilmMakernoteDirectory
593
+ end
594
+
595
+ TAGS = {
596
+ 'Makernote Version' => ['TAG_MAKERNOTE_VERSION', :get_string],
597
+ 'Serial Number' => ['TAG_SERIAL_NUMBER', :get_string],
598
+ 'Quality' => ['TAG_QUALITY', :get_string],
599
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
600
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
601
+ 'Color Saturation' => ['TAG_COLOR_SATURATION', :get_string],
602
+ 'Tone' => ['TAG_TONE', :get_string],
603
+ 'Color Temperature' => ['TAG_COLOR_TEMPERATURE', :get_string],
604
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
605
+ 'White Balance Fine Tune' => ['TAG_WHITE_BALANCE_FINE_TUNE', :get_string],
606
+ 'Noise Reduction' => ['TAG_NOISE_REDUCTION', :get_string],
607
+ 'High Iso Noise Reduction' => ['TAG_HIGH_ISO_NOISE_REDUCTION', :get_string],
608
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
609
+ 'Flash Ev' => ['TAG_FLASH_EV', :get_string],
610
+ 'Macro' => ['TAG_MACRO', :get_string],
611
+ 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
612
+ 'Focus Pixel' => ['TAG_FOCUS_PIXEL', :get_string],
613
+ 'Slow Sync' => ['TAG_SLOW_SYNC', :get_string],
614
+ 'Picture Mode' => ['TAG_PICTURE_MODE', :get_string],
615
+ 'Exr Auto' => ['TAG_EXR_AUTO', :get_string],
616
+ 'Exr Mode' => ['TAG_EXR_MODE', :get_string],
617
+ 'Auto Bracketing' => ['TAG_AUTO_BRACKETING', :get_string],
618
+ 'Sequence Number' => ['TAG_SEQUENCE_NUMBER', :get_string],
619
+ 'Fine Pix Color' => ['TAG_FINE_PIX_COLOR', :get_string],
620
+ 'Blur Warning' => ['TAG_BLUR_WARNING', :get_string],
621
+ 'Focus Warning' => ['TAG_FOCUS_WARNING', :get_string],
622
+ 'Auto Exposure Warning' => ['TAG_AUTO_EXPOSURE_WARNING', :get_string],
623
+ 'Ge Image Size' => ['TAG_GE_IMAGE_SIZE', :get_string],
624
+ 'Dynamic Range' => ['TAG_DYNAMIC_RANGE', :get_string],
625
+ 'Film Mode' => ['TAG_FILM_MODE', :get_string],
626
+ 'Dynamic Range Setting' => ['TAG_DYNAMIC_RANGE_SETTING', :get_string],
627
+ 'Development Dynamic Range' => ['TAG_DEVELOPMENT_DYNAMIC_RANGE', :get_string],
628
+ 'Min Focal Length' => ['TAG_MIN_FOCAL_LENGTH', :get_string],
629
+ 'Max Focal Length' => ['TAG_MAX_FOCAL_LENGTH', :get_string],
630
+ 'Max Aperture At Min Focal' => ['TAG_MAX_APERTURE_AT_MIN_FOCAL', :get_string],
631
+ 'Max Aperture At Max Focal' => ['TAG_MAX_APERTURE_AT_MAX_FOCAL', :get_string],
632
+ 'Auto Dynamic Range' => ['TAG_AUTO_DYNAMIC_RANGE', :get_string],
633
+ 'Faces Detected' => ['TAG_FACES_DETECTED', :get_string],
634
+ 'Face Positions' => ['TAG_FACE_POSITIONS', :get_string],
635
+ 'Face Rec Info' => ['TAG_FACE_REC_INFO', :get_string],
636
+ 'File Source' => ['TAG_FILE_SOURCE', :get_string],
637
+ 'Order Number' => ['TAG_ORDER_NUMBER', :get_string],
638
+ 'Frame Number' => ['TAG_FRAME_NUMBER', :get_string],
639
+ 'Parallax' => ['TAG_PARALLAX', :get_string],
640
+ }
641
+ end
642
+
643
+ class KyoceraMakernoteDirectory < Directory
644
+ java_import com.drew.metadata.exif.makernotes.KyoceraMakernoteDirectory
645
+
646
+ def self.directory_class
647
+ com.drew.metadata.exif.makernotes.KyoceraMakernoteDirectory
648
+ end
649
+
650
+ TAGS = {
651
+ 'Proprietary Thumbnail' => ['TAG_PROPRIETARY_THUMBNAIL', :get_string],
652
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
653
+ }
654
+ end
655
+
656
+ class LeicaMakernoteDirectory < Directory
657
+ java_import com.drew.metadata.exif.makernotes.LeicaMakernoteDirectory
658
+
659
+ def self.directory_class
660
+ com.drew.metadata.exif.makernotes.LeicaMakernoteDirectory
661
+ end
662
+
663
+ TAGS = {
664
+ 'Quality' => ['TAG_QUALITY', :get_string],
665
+ 'User Profile' => ['TAG_USER_PROFILE', :get_string],
666
+ 'Serial Number' => ['TAG_SERIAL_NUMBER', :get_string],
667
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
668
+ 'Lens Type' => ['TAG_LENS_TYPE', :get_string],
669
+ 'External Sensor Brightness Value' => ['TAG_EXTERNAL_SENSOR_BRIGHTNESS_VALUE', :get_string],
670
+ 'Measured Lv' => ['TAG_MEASURED_LV', :get_string],
671
+ 'Approximate F Number' => ['TAG_APPROXIMATE_F_NUMBER', :get_string],
672
+ 'Camera Temperature' => ['TAG_CAMERA_TEMPERATURE', :get_string],
673
+ 'Color Temperature' => ['TAG_COLOR_TEMPERATURE', :get_string],
674
+ 'Wb Red Level' => ['TAG_WB_RED_LEVEL', :get_string],
675
+ 'Wb Green Level' => ['TAG_WB_GREEN_LEVEL', :get_string],
676
+ 'Wb Blue Level' => ['TAG_WB_BLUE_LEVEL', :get_string],
677
+ 'Ccd Version' => ['TAG_CCD_VERSION', :get_string],
678
+ 'Ccd Board Version' => ['TAG_CCD_BOARD_VERSION', :get_string],
679
+ 'Controller Board Version' => ['TAG_CONTROLLER_BOARD_VERSION', :get_string],
680
+ 'M16 C Version' => ['TAG_M16_C_VERSION', :get_string],
681
+ 'Image Id Number' => ['TAG_IMAGE_ID_NUMBER', :get_string],
682
+ }
683
+ end
684
+
685
+ class NikonType1MakernoteDirectory < Directory
686
+ java_import com.drew.metadata.exif.makernotes.NikonType1MakernoteDirectory
687
+
688
+ def self.directory_class
689
+ com.drew.metadata.exif.makernotes.NikonType1MakernoteDirectory
690
+ end
691
+
692
+ TAGS = {
693
+ 'Unknown 1' => ['TAG_UNKNOWN_1', :get_string],
694
+ 'Quality' => ['TAG_QUALITY', :get_string],
695
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
696
+ 'Image Adjustment' => ['TAG_IMAGE_ADJUSTMENT', :get_string],
697
+ 'Ccd Sensitivity' => ['TAG_CCD_SENSITIVITY', :get_int],
698
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
699
+ 'Focus' => ['TAG_FOCUS', :get_string],
700
+ 'Unknown 2' => ['TAG_UNKNOWN_2', :get_string],
701
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
702
+ 'Converter' => ['TAG_CONVERTER', :get_string],
703
+ 'Unknown 3' => ['TAG_UNKNOWN_3', :get_string],
704
+ }
705
+ end
706
+
707
+ class NikonType2MakernoteDirectory < Directory
708
+ java_import com.drew.metadata.exif.makernotes.NikonType2MakernoteDirectory
709
+
710
+ def self.directory_class
711
+ com.drew.metadata.exif.makernotes.NikonType2MakernoteDirectory
712
+ end
713
+
714
+ TAGS = {
715
+ 'Firmware Version' => ['TAG_FIRMWARE_VERSION', :get_string],
716
+ 'Iso 1' => ['TAG_ISO_1', :get_string],
717
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
718
+ 'Quality And File Format' => ['TAG_QUALITY_AND_FILE_FORMAT', :get_string],
719
+ 'Camera White Balance' => ['TAG_CAMERA_WHITE_BALANCE', :get_string],
720
+ 'Camera Sharpening' => ['TAG_CAMERA_SHARPENING', :get_string],
721
+ 'Af Type' => ['TAG_AF_TYPE', :get_string],
722
+ 'Flash Sync Mode' => ['TAG_FLASH_SYNC_MODE', :get_string],
723
+ 'Auto Flash Mode' => ['TAG_AUTO_FLASH_MODE', :get_string],
724
+ 'Unknown 34' => ['TAG_UNKNOWN_34', :get_string],
725
+ 'Camera White Balance Fine' => ['TAG_CAMERA_WHITE_BALANCE_FINE', :get_string],
726
+ 'Camera White Balance Rb Coeff' => ['TAG_CAMERA_WHITE_BALANCE_RB_COEFF', :get_string],
727
+ 'Program Shift' => ['TAG_PROGRAM_SHIFT', :get_string],
728
+ 'Exposure Difference' => ['TAG_EXPOSURE_DIFFERENCE', :get_string],
729
+ 'Iso Mode' => ['TAG_ISO_MODE', :get_string],
730
+ 'Data Dump' => ['TAG_DATA_DUMP', :get_string],
731
+ 'Preview Ifd' => ['TAG_PREVIEW_IFD', :get_string],
732
+ 'Auto Flash Compensation' => ['TAG_AUTO_FLASH_COMPENSATION', :get_string],
733
+ 'Iso Requested' => ['TAG_ISO_REQUESTED', :get_string],
734
+ 'Image Boundary' => ['TAG_IMAGE_BOUNDARY', :get_string],
735
+ 'Flash Exposure Compensation' => ['TAG_FLASH_EXPOSURE_COMPENSATION', :get_string],
736
+ 'Flash Bracket Compensation' => ['TAG_FLASH_BRACKET_COMPENSATION', :get_string],
737
+ 'Ae Bracket Compensation' => ['TAG_AE_BRACKET_COMPENSATION', :get_string],
738
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
739
+ 'Crop High Speed' => ['TAG_CROP_HIGH_SPEED', :get_string],
740
+ 'Exposure Tuning' => ['TAG_EXPOSURE_TUNING', :get_string],
741
+ 'Camera Serial Number' => ['TAG_CAMERA_SERIAL_NUMBER', :get_string],
742
+ 'Color Space' => ['TAG_COLOR_SPACE', :get_string],
743
+ 'Vr Info' => ['TAG_VR_INFO', :get_string],
744
+ 'Image Authentication' => ['TAG_IMAGE_AUTHENTICATION', :get_string],
745
+ 'Unknown 35' => ['TAG_UNKNOWN_35', :get_string],
746
+ 'Active D Lighting' => ['TAG_ACTIVE_D_LIGHTING', :get_string],
747
+ 'Picture Control' => ['TAG_PICTURE_CONTROL', :get_string],
748
+ 'World Time' => ['TAG_WORLD_TIME', :get_string],
749
+ 'Iso Info' => ['TAG_ISO_INFO', :get_string],
750
+ 'Unknown 36' => ['TAG_UNKNOWN_36', :get_string],
751
+ 'Unknown 37' => ['TAG_UNKNOWN_37', :get_string],
752
+ 'Unknown 38' => ['TAG_UNKNOWN_38', :get_string],
753
+ 'Unknown 39' => ['TAG_UNKNOWN_39', :get_string],
754
+ 'Vignette Control' => ['TAG_VIGNETTE_CONTROL', :get_string],
755
+ 'Unknown 40' => ['TAG_UNKNOWN_40', :get_string],
756
+ 'Unknown 41' => ['TAG_UNKNOWN_41', :get_string],
757
+ 'Unknown 42' => ['TAG_UNKNOWN_42', :get_string],
758
+ 'Unknown 43' => ['TAG_UNKNOWN_43', :get_string],
759
+ 'Unknown 44' => ['TAG_UNKNOWN_44', :get_string],
760
+ 'Unknown 45' => ['TAG_UNKNOWN_45', :get_string],
761
+ 'Unknown 46' => ['TAG_UNKNOWN_46', :get_string],
762
+ 'Image Adjustment' => ['TAG_IMAGE_ADJUSTMENT', :get_string],
763
+ 'Camera Tone Compensation' => ['TAG_CAMERA_TONE_COMPENSATION', :get_string],
764
+ 'Adapter' => ['TAG_ADAPTER', :get_string],
765
+ 'Lens Type' => ['TAG_LENS_TYPE', :get_string],
766
+ 'Lens' => ['TAG_LENS', :get_string],
767
+ 'Manual Focus Distance' => ['TAG_MANUAL_FOCUS_DISTANCE', :get_string],
768
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
769
+ 'Flash Used' => ['TAG_FLASH_USED', :get_string],
770
+ 'Af Focus Position' => ['TAG_AF_FOCUS_POSITION', :get_string],
771
+ 'Shooting Mode' => ['TAG_SHOOTING_MODE', :get_string],
772
+ 'Unknown 20' => ['TAG_UNKNOWN_20', :get_string],
773
+ 'Lens Stops' => ['TAG_LENS_STOPS', :get_string],
774
+ 'Contrast Curve' => ['TAG_CONTRAST_CURVE', :get_string],
775
+ 'Camera Color Mode' => ['TAG_CAMERA_COLOR_MODE', :get_string],
776
+ 'Unknown 47' => ['TAG_UNKNOWN_47', :get_string],
777
+ 'Scene Mode' => ['TAG_SCENE_MODE', :get_string],
778
+ 'Light Source' => ['TAG_LIGHT_SOURCE', :get_string],
779
+ 'Shot Info' => ['TAG_SHOT_INFO', :get_string],
780
+ 'Camera Hue Adjustment' => ['TAG_CAMERA_HUE_ADJUSTMENT', :get_string],
781
+ 'Nef Compression' => ['TAG_NEF_COMPRESSION', :get_string],
782
+ 'Saturation' => ['TAG_SATURATION', :get_string],
783
+ 'Noise Reduction' => ['TAG_NOISE_REDUCTION', :get_string],
784
+ 'Linearization Table' => ['TAG_LINEARIZATION_TABLE', :get_string],
785
+ 'Color Balance' => ['TAG_COLOR_BALANCE', :get_string],
786
+ 'Lens Data' => ['TAG_LENS_DATA', :get_string],
787
+ 'Nef Thumbnail Size' => ['TAG_NEF_THUMBNAIL_SIZE', :get_long],
788
+ 'Sensor Pixel Size' => ['TAG_SENSOR_PIXEL_SIZE', :get_string],
789
+ 'Unknown 10' => ['TAG_UNKNOWN_10', :get_string],
790
+ 'Scene Assist' => ['TAG_SCENE_ASSIST', :get_string],
791
+ 'Unknown 11' => ['TAG_UNKNOWN_11', :get_string],
792
+ 'Retouch History' => ['TAG_RETOUCH_HISTORY', :get_string],
793
+ 'Unknown 12' => ['TAG_UNKNOWN_12', :get_string],
794
+ 'Camera Serial Number 2' => ['TAG_CAMERA_SERIAL_NUMBER_2', :get_string],
795
+ 'Image Data Size' => ['TAG_IMAGE_DATA_SIZE', :get_string],
796
+ 'Unknown 27' => ['TAG_UNKNOWN_27', :get_string],
797
+ 'Unknown 28' => ['TAG_UNKNOWN_28', :get_string],
798
+ 'Image Count' => ['TAG_IMAGE_COUNT', :get_string],
799
+ 'Deleted Image Count' => ['TAG_DELETED_IMAGE_COUNT', :get_string],
800
+ 'Exposure Sequence Number' => ['TAG_EXPOSURE_SEQUENCE_NUMBER', :get_string],
801
+ 'Flash Info' => ['TAG_FLASH_INFO', :get_string],
802
+ 'Image Optimisation' => ['TAG_IMAGE_OPTIMISATION', :get_string],
803
+ 'Saturation 2' => ['TAG_SATURATION_2', :get_string],
804
+ 'Digital Vari Program' => ['TAG_DIGITAL_VARI_PROGRAM', :get_string],
805
+ 'Image Stabilisation' => ['TAG_IMAGE_STABILISATION', :get_string],
806
+ 'Af Response' => ['TAG_AF_RESPONSE', :get_string],
807
+ 'Unknown 29' => ['TAG_UNKNOWN_29', :get_string],
808
+ 'Unknown 30' => ['TAG_UNKNOWN_30', :get_string],
809
+ 'Multi Exposure' => ['TAG_MULTI_EXPOSURE', :get_string],
810
+ 'High Iso Noise Reduction' => ['TAG_HIGH_ISO_NOISE_REDUCTION', :get_string],
811
+ 'Unknown 31' => ['TAG_UNKNOWN_31', :get_string],
812
+ 'Unknown 32' => ['TAG_UNKNOWN_32', :get_string],
813
+ 'Unknown 33' => ['TAG_UNKNOWN_33', :get_string],
814
+ 'Unknown 48' => ['TAG_UNKNOWN_48', :get_string],
815
+ 'Power Up Time' => ['TAG_POWER_UP_TIME', :get_string],
816
+ 'Af Info 2' => ['TAG_AF_INFO_2', :get_string],
817
+ 'File Info' => ['TAG_FILE_INFO', :get_string],
818
+ 'Af Tune' => ['TAG_AF_TUNE', :get_string],
819
+ 'Unknown 49' => ['TAG_UNKNOWN_49', :get_string],
820
+ 'Unknown 50' => ['TAG_UNKNOWN_50', :get_string],
821
+ 'Unknown 51' => ['TAG_UNKNOWN_51', :get_string],
822
+ 'Print Im' => ['TAG_PRINT_IM', :get_string],
823
+ 'Nikon Capture Data' => ['TAG_NIKON_CAPTURE_DATA', :get_string],
824
+ 'Unknown 52' => ['TAG_UNKNOWN_52', :get_string],
825
+ 'Unknown 53' => ['TAG_UNKNOWN_53', :get_string],
826
+ 'Nikon Capture Version' => ['TAG_NIKON_CAPTURE_VERSION', :get_string],
827
+ 'Nikon Capture Offsets' => ['TAG_NIKON_CAPTURE_OFFSETS', :get_string],
828
+ 'Nikon Scan' => ['TAG_NIKON_SCAN', :get_string],
829
+ 'Unknown 54' => ['TAG_UNKNOWN_54', :get_string],
830
+ 'Nef Bit Depth' => ['TAG_NEF_BIT_DEPTH', :get_string],
831
+ 'Unknown 55' => ['TAG_UNKNOWN_55', :get_string],
832
+ }
833
+ end
834
+
835
+ class OlympusMakernoteDirectory < Directory
836
+ java_import com.drew.metadata.exif.makernotes.OlympusMakernoteDirectory
837
+
838
+ def self.directory_class
839
+ com.drew.metadata.exif.makernotes.OlympusMakernoteDirectory
840
+ end
841
+
842
+ TAGS = {
843
+ 'Makernote Version' => ['TAG_MAKERNOTE_VERSION', :get_string],
844
+ 'Camera Settings 1' => ['TAG_CAMERA_SETTINGS_1', :get_string],
845
+ 'Camera Settings 2' => ['TAG_CAMERA_SETTINGS_2', :get_string],
846
+ 'Compressed Image Size' => ['TAG_COMPRESSED_IMAGE_SIZE', :get_long],
847
+ 'Minolta Thumbnail Offset 1' => ['TAG_MINOLTA_THUMBNAIL_OFFSET_1', :get_long],
848
+ 'Minolta Thumbnail Offset 2' => ['TAG_MINOLTA_THUMBNAIL_OFFSET_2', :get_long],
849
+ 'Minolta Thumbnail Length' => ['TAG_MINOLTA_THUMBNAIL_LENGTH', :get_long],
850
+ 'Colour Mode' => ['TAG_COLOUR_MODE', :get_string],
851
+ 'Image Quality 1' => ['TAG_IMAGE_QUALITY_1', :get_string],
852
+ 'Image Quality 2' => ['TAG_IMAGE_QUALITY_2', :get_string],
853
+ 'Special Mode' => ['TAG_SPECIAL_MODE', :get_string],
854
+ 'Jpeg Quality' => ['TAG_JPEG_QUALITY', :get_string],
855
+ 'Macro Mode' => ['TAG_MACRO_MODE', :get_string],
856
+ 'Bw Mode' => ['TAG_BW_MODE', :get_string],
857
+ 'Digi Zoom Ratio' => ['TAG_DIGI_ZOOM_RATIO', :get_string],
858
+ 'Focal Plane Diagonal' => ['TAG_FOCAL_PLANE_DIAGONAL', :get_string],
859
+ 'Lens Distortion Parameters' => ['TAG_LENS_DISTORTION_PARAMETERS', :get_string],
860
+ 'Firmware Version' => ['TAG_FIRMWARE_VERSION', :get_string],
861
+ 'Pict Info' => ['TAG_PICT_INFO', :get_string],
862
+ 'Camera Id' => ['TAG_CAMERA_ID', :get_string],
863
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
864
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
865
+ 'Original Manufacturer Model' => ['TAG_ORIGINAL_MANUFACTURER_MODEL', :get_string],
866
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
867
+ 'Data Dump' => ['TAG_DATA_DUMP', :get_string],
868
+ 'Shutter Speed Value' => ['TAG_SHUTTER_SPEED_VALUE', :get_string],
869
+ 'Iso Value' => ['TAG_ISO_VALUE', :get_string],
870
+ 'Aperture Value' => ['TAG_APERTURE_VALUE', :get_string],
871
+ 'Brightness Value' => ['TAG_BRIGHTNESS_VALUE', :get_string],
872
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
873
+ 'Bracket' => ['TAG_BRACKET', :get_string],
874
+ 'Focus Range' => ['TAG_FOCUS_RANGE', :get_string],
875
+ 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
876
+ 'Focus Distance' => ['TAG_FOCUS_DISTANCE', :get_string],
877
+ 'Zoom' => ['TAG_ZOOM', :get_string],
878
+ 'Macro Focus' => ['TAG_MACRO_FOCUS', :get_string],
879
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
880
+ 'Colour Matrix' => ['TAG_COLOUR_MATRIX', :get_string],
881
+ 'Black Level' => ['TAG_BLACK_LEVEL', :get_string],
882
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
883
+ 'Red Bias' => ['TAG_RED_BIAS', :get_string],
884
+ 'Blue Bias' => ['TAG_BLUE_BIAS', :get_string],
885
+ 'Serial Number' => ['TAG_SERIAL_NUMBER', :get_string],
886
+ 'Flash Bias' => ['TAG_FLASH_BIAS', :get_string],
887
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
888
+ 'Sharpness Factor' => ['TAG_SHARPNESS_FACTOR', :get_string],
889
+ 'Colour Control' => ['TAG_COLOUR_CONTROL', :get_string],
890
+ 'Valid Bits' => ['TAG_VALID_BITS', :get_string],
891
+ 'Coring Filter' => ['TAG_CORING_FILTER', :get_string],
892
+ 'Final Width' => ['TAG_FINAL_WIDTH', :get_string],
893
+ 'Final Height' => ['TAG_FINAL_HEIGHT', :get_string],
894
+ 'Compression Ratio' => ['TAG_COMPRESSION_RATIO', :get_string],
895
+ 'Exposure Mode' => ['TAG_EXPOSURE_MODE', :get_string],
896
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
897
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
898
+ 'Image Size' => ['TAG_IMAGE_SIZE', :get_string],
899
+ 'Image Quality' => ['TAG_IMAGE_QUALITY', :get_string],
900
+ 'Shooting Mode' => ['TAG_SHOOTING_MODE', :get_string],
901
+ 'Metering Mode' => ['TAG_METERING_MODE', :get_string],
902
+ 'Apex Film Speed Value' => ['TAG_APEX_FILM_SPEED_VALUE', :get_string],
903
+ 'Apex Shutter Speed Time Value' => ['TAG_APEX_SHUTTER_SPEED_TIME_VALUE', :get_string],
904
+ 'Apex Aperture Value' => ['TAG_APEX_APERTURE_VALUE', :get_string],
905
+ 'Macro Mode' => ['TAG_MACRO_MODE', :get_string],
906
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
907
+ 'Exposure Compensation' => ['TAG_EXPOSURE_COMPENSATION', :get_string],
908
+ 'Bracket Step' => ['TAG_BRACKET_STEP', :get_string],
909
+ 'Interval Length' => ['TAG_INTERVAL_LENGTH', :get_string],
910
+ 'Interval Number' => ['TAG_INTERVAL_NUMBER', :get_string],
911
+ 'Focal Length' => ['TAG_FOCAL_LENGTH', :get_string],
912
+ 'Focus Distance' => ['TAG_FOCUS_DISTANCE', :get_string],
913
+ 'Flash Fired' => ['TAG_FLASH_FIRED', :get_string],
914
+ 'Date' => ['TAG_DATE', :get_string],
915
+ 'Time' => ['TAG_TIME', :get_string],
916
+ 'Max Aperture At Focal Length' => ['TAG_MAX_APERTURE_AT_FOCAL_LENGTH', :get_string],
917
+ 'File Number Memory' => ['TAG_FILE_NUMBER_MEMORY', :get_string],
918
+ 'Last File Number' => ['TAG_LAST_FILE_NUMBER', :get_string],
919
+ 'White Balance Red' => ['TAG_WHITE_BALANCE_RED', :get_string],
920
+ 'White Balance Green' => ['TAG_WHITE_BALANCE_GREEN', :get_string],
921
+ 'White Balance Blue' => ['TAG_WHITE_BALANCE_BLUE', :get_string],
922
+ 'Saturation' => ['TAG_SATURATION', :get_string],
923
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
924
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
925
+ 'Subject Program' => ['TAG_SUBJECT_PROGRAM', :get_string],
926
+ 'Flash Compensation' => ['TAG_FLASH_COMPENSATION', :get_string],
927
+ 'Iso Setting' => ['TAG_ISO_SETTING', :get_string],
928
+ 'Camera Model' => ['TAG_CAMERA_MODEL', :get_string],
929
+ 'Interval Mode' => ['TAG_INTERVAL_MODE', :get_string],
930
+ 'Folder Name' => ['TAG_FOLDER_NAME', :get_string],
931
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
932
+ 'Color Filter' => ['TAG_COLOR_FILTER', :get_string],
933
+ 'Black And White Filter' => ['TAG_BLACK_AND_WHITE_FILTER', :get_string],
934
+ 'Internal Flash' => ['TAG_INTERNAL_FLASH', :get_string],
935
+ 'Apex Brightness Value' => ['TAG_APEX_BRIGHTNESS_VALUE', :get_string],
936
+ 'Spot Focus Point X Coordinate' => ['TAG_SPOT_FOCUS_POINT_X_COORDINATE', :get_string],
937
+ 'Spot Focus Point Y Coordinate' => ['TAG_SPOT_FOCUS_POINT_Y_COORDINATE', :get_string],
938
+ 'Wide Focus Zone' => ['TAG_WIDE_FOCUS_ZONE', :get_string],
939
+ 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
940
+ 'Focus Area' => ['TAG_FOCUS_AREA', :get_string],
941
+ 'Dec Switch Position' => ['TAG_DEC_SWITCH_POSITION', :get_string],
942
+ }
943
+ end
944
+
945
+ class PanasonicMakernoteDirectory < Directory
946
+ java_import com.drew.metadata.exif.makernotes.PanasonicMakernoteDirectory
947
+
948
+ def self.directory_class
949
+ com.drew.metadata.exif.makernotes.PanasonicMakernoteDirectory
950
+ end
951
+
952
+ TAGS = {
953
+ 'Quality Mode' => ['TAG_QUALITY_MODE', :get_string],
954
+ 'Firmware Version' => ['TAG_FIRMWARE_VERSION', :get_string],
955
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
956
+ 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
957
+ 'Af Area Mode' => ['TAG_AF_AREA_MODE', :get_string],
958
+ 'Image Stabilization' => ['TAG_IMAGE_STABILIZATION', :get_string],
959
+ 'Macro Mode' => ['TAG_MACRO_MODE', :get_string],
960
+ 'Record Mode' => ['TAG_RECORD_MODE', :get_string],
961
+ 'Audio' => ['TAG_AUDIO', :get_string],
962
+ 'Unknown Data Dump' => ['TAG_UNKNOWN_DATA_DUMP', :get_string],
963
+ 'Easy Mode' => ['TAG_EASY_MODE', :get_string],
964
+ 'White Balance Bias' => ['TAG_WHITE_BALANCE_BIAS', :get_string],
965
+ 'Flash Bias' => ['TAG_FLASH_BIAS', :get_string],
966
+ 'Internal Serial Number' => ['TAG_INTERNAL_SERIAL_NUMBER', :get_string],
967
+ 'Exif Version' => ['TAG_EXIF_VERSION', :get_string],
968
+ 'Color Effect' => ['TAG_COLOR_EFFECT', :get_string],
969
+ 'Uptime' => ['TAG_UPTIME', :get_string],
970
+ 'Burst Mode' => ['TAG_BURST_MODE', :get_string],
971
+ 'Sequence Number' => ['TAG_SEQUENCE_NUMBER', :get_string],
972
+ 'Contrast Mode' => ['TAG_CONTRAST_MODE', :get_string],
973
+ 'Noise Reduction' => ['TAG_NOISE_REDUCTION', :get_string],
974
+ 'Self Timer' => ['TAG_SELF_TIMER', :get_string],
975
+ 'Rotation' => ['TAG_ROTATION', :get_string],
976
+ 'Af Assist Lamp' => ['TAG_AF_ASSIST_LAMP', :get_string],
977
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
978
+ 'Baby Age' => ['TAG_BABY_AGE', :get_string],
979
+ 'Optical Zoom Mode' => ['TAG_OPTICAL_ZOOM_MODE', :get_string],
980
+ 'Conversion Lens' => ['TAG_CONVERSION_LENS', :get_string],
981
+ 'Travel Day' => ['TAG_TRAVEL_DAY', :get_string],
982
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
983
+ 'World Time Location' => ['TAG_WORLD_TIME_LOCATION', :get_string],
984
+ 'Text Stamp' => ['TAG_TEXT_STAMP', :get_string],
985
+ 'Program Iso' => ['TAG_PROGRAM_ISO', :get_string],
986
+ 'Advanced Scene Mode' => ['TAG_ADVANCED_SCENE_MODE', :get_string],
987
+ 'Text Stamp 1' => ['TAG_TEXT_STAMP_1', :get_string],
988
+ 'Faces Detected' => ['TAG_FACES_DETECTED', :get_string],
989
+ 'Saturation' => ['TAG_SATURATION', :get_string],
990
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
991
+ 'Film Mode' => ['TAG_FILM_MODE', :get_string],
992
+ 'Wb Adjust Ab' => ['TAG_WB_ADJUST_AB', :get_string],
993
+ 'Wb Adjust Gm' => ['TAG_WB_ADJUST_GM', :get_string],
994
+ 'Af Point Position' => ['TAG_AF_POINT_POSITION', :get_string],
995
+ 'Face Detection Info' => ['TAG_FACE_DETECTION_INFO', :get_string],
996
+ 'Lens Type' => ['TAG_LENS_TYPE', :get_string],
997
+ 'Lens Serial Number' => ['TAG_LENS_SERIAL_NUMBER', :get_string],
998
+ 'Accessory Type' => ['TAG_ACCESSORY_TYPE', :get_string],
999
+ 'Transform' => ['TAG_TRANSFORM', :get_string],
1000
+ 'Intelligent Exposure' => ['TAG_INTELLIGENT_EXPOSURE', :get_string],
1001
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
1002
+ 'Face Recognition Info' => ['TAG_FACE_RECOGNITION_INFO', :get_string],
1003
+ 'Flash Warning' => ['TAG_FLASH_WARNING', :get_string],
1004
+ 'Recognized Face Flags' => ['TAG_RECOGNIZED_FACE_FLAGS', :get_string],
1005
+ 'Title' => ['TAG_TITLE', :get_string],
1006
+ 'Baby Name' => ['TAG_BABY_NAME', :get_string],
1007
+ 'Location' => ['TAG_LOCATION', :get_string],
1008
+ 'Country' => ['TAG_COUNTRY', :get_string],
1009
+ 'State' => ['TAG_STATE', :get_string],
1010
+ 'City' => ['TAG_CITY', :get_string],
1011
+ 'Landmark' => ['TAG_LANDMARK', :get_string],
1012
+ 'Intelligent Resolution' => ['TAG_INTELLIGENT_RESOLUTION', :get_string],
1013
+ 'Makernote Version' => ['TAG_MAKERNOTE_VERSION', :get_string],
1014
+ 'Scene Mode' => ['TAG_SCENE_MODE', :get_string],
1015
+ 'Wb Red Level' => ['TAG_WB_RED_LEVEL', :get_string],
1016
+ 'Wb Green Level' => ['TAG_WB_GREEN_LEVEL', :get_string],
1017
+ 'Wb Blue Level' => ['TAG_WB_BLUE_LEVEL', :get_string],
1018
+ 'Flash Fired' => ['TAG_FLASH_FIRED', :get_string],
1019
+ 'Text Stamp 2' => ['TAG_TEXT_STAMP_2', :get_string],
1020
+ 'Text Stamp 3' => ['TAG_TEXT_STAMP_3', :get_string],
1021
+ 'Baby Age 1' => ['TAG_BABY_AGE_1', :get_string],
1022
+ 'Transform 1' => ['TAG_TRANSFORM_1', :get_string],
1023
+ }
1024
+ end
1025
+
1026
+ class PentaxMakernoteDirectory < Directory
1027
+ java_import com.drew.metadata.exif.makernotes.PentaxMakernoteDirectory
1028
+
1029
+ def self.directory_class
1030
+ com.drew.metadata.exif.makernotes.PentaxMakernoteDirectory
1031
+ end
1032
+
1033
+ TAGS = {
1034
+ 'Capture Mode' => ['TAG_CAPTURE_MODE', :get_string],
1035
+ 'Quality Level' => ['TAG_QUALITY_LEVEL', :get_string],
1036
+ 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
1037
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
1038
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
1039
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
1040
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
1041
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
1042
+ 'Saturation' => ['TAG_SATURATION', :get_string],
1043
+ 'Iso Speed' => ['TAG_ISO_SPEED', :get_string],
1044
+ 'Colour' => ['TAG_COLOUR', :get_string],
1045
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
1046
+ 'Time Zone' => ['TAG_TIME_ZONE', :get_string],
1047
+ 'Daylight Savings' => ['TAG_DAYLIGHT_SAVINGS', :get_string],
1048
+ }
1049
+ end
1050
+
1051
+ class RicohMakernoteDirectory < Directory
1052
+ java_import com.drew.metadata.exif.makernotes.RicohMakernoteDirectory
1053
+
1054
+ def self.directory_class
1055
+ com.drew.metadata.exif.makernotes.RicohMakernoteDirectory
1056
+ end
1057
+
1058
+ TAGS = {
1059
+ 'Makernote Data Type' => ['TAG_MAKERNOTE_DATA_TYPE', :get_string],
1060
+ 'Version' => ['TAG_VERSION', :get_string],
1061
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
1062
+ 'Ricoh Camera Info Makernote Sub Ifd Pointer' => ['TAG_RICOH_CAMERA_INFO_MAKERNOTE_SUB_IFD_POINTER', :get_string],
1063
+ }
1064
+ end
1065
+
1066
+ class SanyoMakernoteDirectory < Directory
1067
+ java_import com.drew.metadata.exif.makernotes.SanyoMakernoteDirectory
1068
+
1069
+ def self.directory_class
1070
+ com.drew.metadata.exif.makernotes.SanyoMakernoteDirectory
1071
+ end
1072
+
1073
+ TAGS = {
1074
+ 'Makernote Offset' => ['TAG_MAKERNOTE_OFFSET', :get_string],
1075
+ 'Sanyo Thumbnail' => ['TAG_SANYO_THUMBNAIL', :get_string],
1076
+ 'Special Mode' => ['TAG_SPECIAL_MODE', :get_string],
1077
+ 'Sanyo Quality' => ['TAG_SANYO_QUALITY', :get_string],
1078
+ 'Macro' => ['TAG_MACRO', :get_string],
1079
+ 'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
1080
+ 'Software Version' => ['TAG_SOFTWARE_VERSION', :get_string],
1081
+ 'Pict Info' => ['TAG_PICT_INFO', :get_string],
1082
+ 'Camera Id' => ['TAG_CAMERA_ID', :get_string],
1083
+ 'Sequential Shot' => ['TAG_SEQUENTIAL_SHOT', :get_string],
1084
+ 'Wide Range' => ['TAG_WIDE_RANGE', :get_string],
1085
+ 'Color Adjustment Mode' => ['TAG_COLOR_ADJUSTMENT_MODE', :get_string],
1086
+ 'Quick Shot' => ['TAG_QUICK_SHOT', :get_string],
1087
+ 'Self Timer' => ['TAG_SELF_TIMER', :get_string],
1088
+ 'Voice Memo' => ['TAG_VOICE_MEMO', :get_string],
1089
+ 'Record Shutter Release' => ['TAG_RECORD_SHUTTER_RELEASE', :get_string],
1090
+ 'Flicker Reduce' => ['TAG_FLICKER_REDUCE', :get_string],
1091
+ 'Optical Zoom On' => ['TAG_OPTICAL_ZOOM_ON', :get_string],
1092
+ 'Digital Zoom On' => ['TAG_DIGITAL_ZOOM_ON', :get_string],
1093
+ 'Light Source Special' => ['TAG_LIGHT_SOURCE_SPECIAL', :get_string],
1094
+ 'Resaved' => ['TAG_RESAVED', :get_string],
1095
+ 'Scene Select' => ['TAG_SCENE_SELECT', :get_string],
1096
+ 'Manual Focus Distance Or Face Info' => ['TAG_MANUAL_FOCUS_DISTANCE_OR_FACE_INFO', :get_string],
1097
+ 'Sequence Shot Interval' => ['TAG_SEQUENCE_SHOT_INTERVAL', :get_string],
1098
+ 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
1099
+ 'Print Im' => ['TAG_PRINT_IM', :get_string],
1100
+ 'Data Dump' => ['TAG_DATA_DUMP', :get_string],
1101
+ }
1102
+ end
1103
+
1104
+ class SigmaMakernoteDirectory < Directory
1105
+ java_import com.drew.metadata.exif.makernotes.SigmaMakernoteDirectory
1106
+
1107
+ def self.directory_class
1108
+ com.drew.metadata.exif.makernotes.SigmaMakernoteDirectory
1109
+ end
1110
+
1111
+ TAGS = {
1112
+ 'Serial Number' => ['TAG_SERIAL_NUMBER', :get_string],
1113
+ 'Drive Mode' => ['TAG_DRIVE_MODE', :get_string],
1114
+ 'Resolution Mode' => ['TAG_RESOLUTION_MODE', :get_string],
1115
+ 'Auto Focus Mode' => ['TAG_AUTO_FOCUS_MODE', :get_string],
1116
+ 'Focus Setting' => ['TAG_FOCUS_SETTING', :get_string],
1117
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
1118
+ 'Exposure Mode' => ['TAG_EXPOSURE_MODE', :get_string],
1119
+ 'Metering Mode' => ['TAG_METERING_MODE', :get_string],
1120
+ 'Lens Range' => ['TAG_LENS_RANGE', :get_string],
1121
+ 'Color Space' => ['TAG_COLOR_SPACE', :get_string],
1122
+ 'Exposure' => ['TAG_EXPOSURE', :get_string],
1123
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
1124
+ 'Shadow' => ['TAG_SHADOW', :get_string],
1125
+ 'Highlight' => ['TAG_HIGHLIGHT', :get_string],
1126
+ 'Saturation' => ['TAG_SATURATION', :get_string],
1127
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
1128
+ 'Fill Light' => ['TAG_FILL_LIGHT', :get_string],
1129
+ 'Color Adjustment' => ['TAG_COLOR_ADJUSTMENT', :get_string],
1130
+ 'Adjustment Mode' => ['TAG_ADJUSTMENT_MODE', :get_string],
1131
+ 'Quality' => ['TAG_QUALITY', :get_string],
1132
+ 'Firmware' => ['TAG_FIRMWARE', :get_string],
1133
+ 'Software' => ['TAG_SOFTWARE', :get_string],
1134
+ 'Auto Bracket' => ['TAG_AUTO_BRACKET', :get_string],
1135
+ }
1136
+ end
1137
+
1138
+ class SonyType1MakernoteDirectory < Directory
1139
+ java_import com.drew.metadata.exif.makernotes.SonyType1MakernoteDirectory
1140
+
1141
+ def self.directory_class
1142
+ com.drew.metadata.exif.makernotes.SonyType1MakernoteDirectory
1143
+ end
1144
+
1145
+ TAGS = {
1146
+ 'Camera Info' => ['TAG_CAMERA_INFO', :get_string],
1147
+ 'Focus Info' => ['TAG_FOCUS_INFO', :get_string],
1148
+ 'Image Quality' => ['TAG_IMAGE_QUALITY', :get_string],
1149
+ 'Flash Exposure Comp' => ['TAG_FLASH_EXPOSURE_COMP', :get_string],
1150
+ 'Teleconverter' => ['TAG_TELECONVERTER', :get_string],
1151
+ 'White Balance Fine Tune' => ['TAG_WHITE_BALANCE_FINE_TUNE', :get_string],
1152
+ 'Camera Settings' => ['TAG_CAMERA_SETTINGS', :get_string],
1153
+ 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
1154
+ 'Extra Info' => ['TAG_EXTRA_INFO', :get_string],
1155
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
1156
+ 'Multi Burst Mode' => ['TAG_MULTI_BURST_MODE', :get_string],
1157
+ 'Multi Burst Image Width' => ['TAG_MULTI_BURST_IMAGE_WIDTH', :get_long],
1158
+ 'Multi Burst Image Height' => ['TAG_MULTI_BURST_IMAGE_HEIGHT', :get_long],
1159
+ 'Panorama' => ['TAG_PANORAMA', :get_string],
1160
+ 'Preview Image' => ['TAG_PREVIEW_IMAGE', :get_string],
1161
+ 'Rating' => ['TAG_RATING', :get_string],
1162
+ 'Contrast' => ['TAG_CONTRAST', :get_string],
1163
+ 'Saturation' => ['TAG_SATURATION', :get_string],
1164
+ 'Sharpness' => ['TAG_SHARPNESS', :get_string],
1165
+ 'Brightness' => ['TAG_BRIGHTNESS', :get_string],
1166
+ 'Long Exposure Noise Reduction' => ['TAG_LONG_EXPOSURE_NOISE_REDUCTION', :get_string],
1167
+ 'High Iso Noise Reduction' => ['TAG_HIGH_ISO_NOISE_REDUCTION', :get_string],
1168
+ 'Hdr' => ['TAG_HDR', :get_string],
1169
+ 'Multi Frame Noise Reduction' => ['TAG_MULTI_FRAME_NOISE_REDUCTION', :get_string],
1170
+ 'Picture Effect' => ['TAG_PICTURE_EFFECT', :get_string],
1171
+ 'Soft Skin Effect' => ['TAG_SOFT_SKIN_EFFECT', :get_string],
1172
+ 'Vignetting Correction' => ['TAG_VIGNETTING_CORRECTION', :get_string],
1173
+ 'Lateral Chromatic Aberration' => ['TAG_LATERAL_CHROMATIC_ABERRATION', :get_string],
1174
+ 'Distortion Correction' => ['TAG_DISTORTION_CORRECTION', :get_string],
1175
+ 'Wb Shift Amber Magenta' => ['TAG_WB_SHIFT_AMBER_MAGENTA', :get_string],
1176
+ 'Auto Portrait Framed' => ['TAG_AUTO_PORTRAIT_FRAMED', :get_string],
1177
+ 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
1178
+ 'Af Point Selected' => ['TAG_AF_POINT_SELECTED', :get_string],
1179
+ 'Shot Info' => ['TAG_SHOT_INFO', :get_string],
1180
+ 'File Format' => ['TAG_FILE_FORMAT', :get_string],
1181
+ 'Sony Model Id' => ['TAG_SONY_MODEL_ID', :get_string],
1182
+ 'Color Mode Setting' => ['TAG_COLOR_MODE_SETTING', :get_string],
1183
+ 'Color Temperature' => ['TAG_COLOR_TEMPERATURE', :get_string],
1184
+ 'Color Compensation Filter' => ['TAG_COLOR_COMPENSATION_FILTER', :get_string],
1185
+ 'Scene Mode' => ['TAG_SCENE_MODE', :get_string],
1186
+ 'Zone Matching' => ['TAG_ZONE_MATCHING', :get_string],
1187
+ 'Dynamic Range Optimiser' => ['TAG_DYNAMIC_RANGE_OPTIMISER', :get_string],
1188
+ 'Image Stabilisation' => ['TAG_IMAGE_STABILISATION', :get_string],
1189
+ 'Lens Id' => ['TAG_LENS_ID', :get_string],
1190
+ 'Minolta Makernote' => ['TAG_MINOLTA_MAKERNOTE', :get_string],
1191
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
1192
+ 'Lens Spec' => ['TAG_LENS_SPEC', :get_string],
1193
+ 'Full Image Size' => ['TAG_FULL_IMAGE_SIZE', :get_string],
1194
+ 'Preview Image Size' => ['TAG_PREVIEW_IMAGE_SIZE', :get_string],
1195
+ 'Macro' => ['TAG_MACRO', :get_string],
1196
+ 'Exposure Mode' => ['TAG_EXPOSURE_MODE', :get_string],
1197
+ 'Focus Mode 2' => ['TAG_FOCUS_MODE_2', :get_string],
1198
+ 'Af Mode' => ['TAG_AF_MODE', :get_string],
1199
+ 'Af Illuminator' => ['TAG_AF_ILLUMINATOR', :get_string],
1200
+ 'Jpeg Quality' => ['TAG_JPEG_QUALITY', :get_string],
1201
+ 'Flash Level' => ['TAG_FLASH_LEVEL', :get_string],
1202
+ 'Release Mode' => ['TAG_RELEASE_MODE', :get_string],
1203
+ 'Sequence Number' => ['TAG_SEQUENCE_NUMBER', :get_string],
1204
+ 'Anti Blur' => ['TAG_ANTI_BLUR', :get_string],
1205
+ 'Long Exposure Noise Reduction Or Focus Mode' => ['TAG_LONG_EXPOSURE_NOISE_REDUCTION_OR_FOCUS_MODE', :get_string],
1206
+ 'Dynamic Range Optimizer' => ['TAG_DYNAMIC_RANGE_OPTIMIZER', :get_string],
1207
+ 'High Iso Noise Reduction 2' => ['TAG_HIGH_ISO_NOISE_REDUCTION_2', :get_string],
1208
+ 'Intelligent Auto' => ['TAG_INTELLIGENT_AUTO', :get_string],
1209
+ 'White Balance 2' => ['TAG_WHITE_BALANCE_2', :get_string],
1210
+ 'No Print' => ['TAG_NO_PRINT', :get_string],
1211
+ }
1212
+ end
1213
+
1214
+ class SonyType6MakernoteDirectory < Directory
1215
+ java_import com.drew.metadata.exif.makernotes.SonyType6MakernoteDirectory
1216
+
1217
+ def self.directory_class
1218
+ com.drew.metadata.exif.makernotes.SonyType6MakernoteDirectory
1219
+ end
1220
+
1221
+ TAGS = {
1222
+ 'Makernote Thumb Offset' => ['TAG_MAKERNOTE_THUMB_OFFSET', :get_string],
1223
+ 'Makernote Thumb Length' => ['TAG_MAKERNOTE_THUMB_LENGTH', :get_string],
1224
+ 'Unknown 1' => ['TAG_UNKNOWN_1', :get_string],
1225
+ 'Makernote Thumb Version' => ['TAG_MAKERNOTE_THUMB_VERSION', :get_string],
1226
+ }
1227
+ end
1228
+
1229
+ class GifHeaderDirectory < Directory
1230
+ java_import com.drew.metadata.gif.GifHeaderDirectory
1231
+
1232
+ def self.directory_class
1233
+ com.drew.metadata.gif.GifHeaderDirectory
1234
+ end
1235
+
1236
+ TAGS = {
1237
+ 'Gif Format Version' => ['TAG_GIF_FORMAT_VERSION', :get_string],
1238
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
1239
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
1240
+ 'Color Table Size' => ['TAG_COLOR_TABLE_SIZE', :get_string],
1241
+ 'Is Color Table Sorted' => ['TAG_IS_COLOR_TABLE_SORTED', :get_string],
1242
+ 'Bits Per Pixel' => ['TAG_BITS_PER_PIXEL', :get_string],
1243
+ 'Has Global Color Table' => ['TAG_HAS_GLOBAL_COLOR_TABLE', :get_string],
1244
+ 'Transparent Color Index' => ['TAG_TRANSPARENT_COLOR_INDEX', :get_string],
1245
+ 'Pixel Aspect Ratio' => ['TAG_PIXEL_ASPECT_RATIO', :get_string],
1246
+ }
1247
+ end
1248
+
1249
+ class IccDirectory < Directory
1250
+ java_import com.drew.metadata.icc.IccDirectory
1251
+
1252
+ def self.directory_class
1253
+ com.drew.metadata.icc.IccDirectory
1254
+ end
1255
+
1256
+ TAGS = {
1257
+ 'Profile Byte Count' => ['TAG_PROFILE_BYTE_COUNT', :get_string],
1258
+ 'Cmm Type' => ['TAG_CMM_TYPE', :get_string],
1259
+ 'Profile Version' => ['TAG_PROFILE_VERSION', :get_string],
1260
+ 'Profile Class' => ['TAG_PROFILE_CLASS', :get_string],
1261
+ 'Color Space' => ['TAG_COLOR_SPACE', :get_string],
1262
+ 'Profile Connection Space' => ['TAG_PROFILE_CONNECTION_SPACE', :get_string],
1263
+ 'Profile Datetime' => ['TAG_PROFILE_DATETIME', :get_string],
1264
+ 'Signature' => ['TAG_SIGNATURE', :get_string],
1265
+ 'Platform' => ['TAG_PLATFORM', :get_string],
1266
+ 'Cmm Flags' => ['TAG_CMM_FLAGS', :get_string],
1267
+ 'Device Make' => ['TAG_DEVICE_MAKE', :get_string],
1268
+ 'Device Model' => ['TAG_DEVICE_MODEL', :get_string],
1269
+ 'Device Attr' => ['TAG_DEVICE_ATTR', :get_string],
1270
+ 'Rendering Intent' => ['TAG_RENDERING_INTENT', :get_string],
1271
+ 'Xyz Values' => ['TAG_XYZ_VALUES', :get_string],
1272
+ 'Profile Creator' => ['TAG_PROFILE_CREATOR', :get_string],
1273
+ 'Count' => ['TAG_COUNT', :get_string],
1274
+ 'A2b0' => ['TAG_A2B0', :get_string],
1275
+ 'A2b1' => ['TAG_A2B1', :get_string],
1276
+ 'A2b2' => ['TAG_A2B2', :get_string],
1277
+ 'Bxyz' => ['TAG_bXYZ', :get_string],
1278
+ 'Btrc' => ['TAG_bTRC', :get_string],
1279
+ 'B2a0' => ['TAG_B2A0', :get_string],
1280
+ 'B2a1' => ['TAG_B2A1', :get_string],
1281
+ 'B2a2' => ['TAG_B2A2', :get_string],
1282
+ 'Calt' => ['TAG_calt', :get_string],
1283
+ 'Targ' => ['TAG_targ', :get_string],
1284
+ 'Chad' => ['TAG_chad', :get_string],
1285
+ 'Chrm' => ['TAG_chrm', :get_string],
1286
+ 'Cprt' => ['TAG_cprt', :get_string],
1287
+ 'Crdi' => ['TAG_crdi', :get_string],
1288
+ 'Dmnd' => ['TAG_dmnd', :get_string],
1289
+ 'Dmdd' => ['TAG_dmdd', :get_string],
1290
+ 'Devs' => ['TAG_devs', :get_string],
1291
+ 'Gamt' => ['TAG_gamt', :get_string],
1292
+ 'Ktrc' => ['TAG_kTRC', :get_string],
1293
+ 'Gxyz' => ['TAG_gXYZ', :get_string],
1294
+ 'Gtrc' => ['TAG_gTRC', :get_string],
1295
+ 'Lumi' => ['TAG_lumi', :get_string],
1296
+ 'Meas' => ['TAG_meas', :get_string],
1297
+ 'Bkpt' => ['TAG_bkpt', :get_string],
1298
+ 'Wtpt' => ['TAG_wtpt', :get_string],
1299
+ 'Ncol' => ['TAG_ncol', :get_string],
1300
+ 'Ncl2' => ['TAG_ncl2', :get_string],
1301
+ 'Resp' => ['TAG_resp', :get_string],
1302
+ 'Pre0' => ['TAG_pre0', :get_string],
1303
+ 'Pre1' => ['TAG_pre1', :get_string],
1304
+ 'Pre2' => ['TAG_pre2', :get_string],
1305
+ 'Desc' => ['TAG_desc', :get_string],
1306
+ 'Pseq' => ['TAG_pseq', :get_string],
1307
+ 'Psd0' => ['TAG_psd0', :get_string],
1308
+ 'Psd1' => ['TAG_psd1', :get_string],
1309
+ 'Psd2' => ['TAG_psd2', :get_string],
1310
+ 'Psd3' => ['TAG_psd3', :get_string],
1311
+ 'Ps2s' => ['TAG_ps2s', :get_string],
1312
+ 'Ps2i' => ['TAG_ps2i', :get_string],
1313
+ 'Rxyz' => ['TAG_rXYZ', :get_string],
1314
+ 'Rtrc' => ['TAG_rTRC', :get_string],
1315
+ 'Scrd' => ['TAG_scrd', :get_string],
1316
+ 'Scrn' => ['TAG_scrn', :get_string],
1317
+ 'Tech' => ['TAG_tech', :get_string],
1318
+ 'Bfd' => ['TAG_bfd', :get_string],
1319
+ 'Vued' => ['TAG_vued', :get_string],
1320
+ 'View' => ['TAG_view', :get_string],
1321
+ 'Apple Multi Language Profile Name' => ['TAG_APPLE_MULTI_LANGUAGE_PROFILE_NAME', :get_string],
1322
+ }
1323
+ end
1324
+
1325
+ class IptcDirectory < Directory
1326
+ java_import com.drew.metadata.iptc.IptcDirectory
1327
+
1328
+ def self.directory_class
1329
+ com.drew.metadata.iptc.IptcDirectory
1330
+ end
1331
+
1332
+ TAGS = {
1333
+ 'Envelope Record Version' => ['TAG_ENVELOPE_RECORD_VERSION', :get_string],
1334
+ 'Destination' => ['TAG_DESTINATION', :get_string],
1335
+ 'File Format' => ['TAG_FILE_FORMAT', :get_string],
1336
+ 'File Version' => ['TAG_FILE_VERSION', :get_string],
1337
+ 'Service Id' => ['TAG_SERVICE_ID', :get_string],
1338
+ 'Envelope Number' => ['TAG_ENVELOPE_NUMBER', :get_string],
1339
+ 'Product Id' => ['TAG_PRODUCT_ID', :get_string],
1340
+ 'Envelope Priority' => ['TAG_ENVELOPE_PRIORITY', :get_string],
1341
+ 'Date Sent' => ['TAG_DATE_SENT', :get_string],
1342
+ 'Time Sent' => ['TAG_TIME_SENT', :get_string],
1343
+ 'Coded Character Set' => ['TAG_CODED_CHARACTER_SET', :get_string],
1344
+ 'Unique Object Name' => ['TAG_UNIQUE_OBJECT_NAME', :get_string],
1345
+ 'Arm Identifier' => ['TAG_ARM_IDENTIFIER', :get_string],
1346
+ 'Arm Version' => ['TAG_ARM_VERSION', :get_string],
1347
+ 'Application Record Version' => ['TAG_APPLICATION_RECORD_VERSION', :get_string],
1348
+ 'Object Type Reference' => ['TAG_OBJECT_TYPE_REFERENCE', :get_string],
1349
+ 'Object Attribute Reference' => ['TAG_OBJECT_ATTRIBUTE_REFERENCE', :get_string],
1350
+ 'Object Name' => ['TAG_OBJECT_NAME', :get_string],
1351
+ 'Edit Status' => ['TAG_EDIT_STATUS', :get_string],
1352
+ 'Editorial Update' => ['TAG_EDITORIAL_UPDATE', :get_string],
1353
+ 'Urgency' => ['TAG_URGENCY', :get_string],
1354
+ 'Subject Reference' => ['TAG_SUBJECT_REFERENCE', :get_string],
1355
+ 'Category' => ['TAG_CATEGORY', :get_string],
1356
+ 'Supplemental Categories' => ['TAG_SUPPLEMENTAL_CATEGORIES', :get_string],
1357
+ 'Fixture Id' => ['TAG_FIXTURE_ID', :get_string],
1358
+ 'Keywords' => ['TAG_KEYWORDS', :get_string],
1359
+ 'Content Location Code' => ['TAG_CONTENT_LOCATION_CODE', :get_string],
1360
+ 'Content Location Name' => ['TAG_CONTENT_LOCATION_NAME', :get_string],
1361
+ 'Release Date' => ['TAG_RELEASE_DATE', :get_string],
1362
+ 'Release Time' => ['TAG_RELEASE_TIME', :get_string],
1363
+ 'Expiration Date' => ['TAG_EXPIRATION_DATE', :get_string],
1364
+ 'Expiration Time' => ['TAG_EXPIRATION_TIME', :get_string],
1365
+ 'Special Instructions' => ['TAG_SPECIAL_INSTRUCTIONS', :get_string],
1366
+ 'Action Advised' => ['TAG_ACTION_ADVISED', :get_string],
1367
+ 'Reference Service' => ['TAG_REFERENCE_SERVICE', :get_string],
1368
+ 'Reference Date' => ['TAG_REFERENCE_DATE', :get_string],
1369
+ 'Reference Number' => ['TAG_REFERENCE_NUMBER', :get_string],
1370
+ 'Date Created' => ['TAG_DATE_CREATED', :get_string],
1371
+ 'Time Created' => ['TAG_TIME_CREATED', :get_string],
1372
+ 'Digital Date Created' => ['TAG_DIGITAL_DATE_CREATED', :get_string],
1373
+ 'Digital Time Created' => ['TAG_DIGITAL_TIME_CREATED', :get_string],
1374
+ 'Originating Program' => ['TAG_ORIGINATING_PROGRAM', :get_string],
1375
+ 'Program Version' => ['TAG_PROGRAM_VERSION', :get_string],
1376
+ 'Object Cycle' => ['TAG_OBJECT_CYCLE', :get_string],
1377
+ 'By Line' => ['TAG_BY_LINE', :get_string],
1378
+ 'By Line Title' => ['TAG_BY_LINE_TITLE', :get_string],
1379
+ 'City' => ['TAG_CITY', :get_string],
1380
+ 'Sub Location' => ['TAG_SUB_LOCATION', :get_string],
1381
+ 'Province Or State' => ['TAG_PROVINCE_OR_STATE', :get_string],
1382
+ 'Country Or Primary Location Code' => ['TAG_COUNTRY_OR_PRIMARY_LOCATION_CODE', :get_string],
1383
+ 'Country Or Primary Location Name' => ['TAG_COUNTRY_OR_PRIMARY_LOCATION_NAME', :get_string],
1384
+ 'Original Transmission Reference' => ['TAG_ORIGINAL_TRANSMISSION_REFERENCE', :get_string],
1385
+ 'Headline' => ['TAG_HEADLINE', :get_string],
1386
+ 'Credit' => ['TAG_CREDIT', :get_string],
1387
+ 'Source' => ['TAG_SOURCE', :get_string],
1388
+ 'Copyright Notice' => ['TAG_COPYRIGHT_NOTICE', :get_string],
1389
+ 'Contact' => ['TAG_CONTACT', :get_string],
1390
+ 'Caption' => ['TAG_CAPTION', :get_string],
1391
+ 'Local Caption' => ['TAG_LOCAL_CAPTION', :get_string],
1392
+ 'Caption Writer' => ['TAG_CAPTION_WRITER', :get_string],
1393
+ 'Rasterized Caption' => ['TAG_RASTERIZED_CAPTION', :get_string],
1394
+ 'Image Type' => ['TAG_IMAGE_TYPE', :get_string],
1395
+ 'Image Orientation' => ['TAG_IMAGE_ORIENTATION', :get_string],
1396
+ 'Language Identifier' => ['TAG_LANGUAGE_IDENTIFIER', :get_string],
1397
+ 'Audio Type' => ['TAG_AUDIO_TYPE', :get_string],
1398
+ 'Audio Sampling Rate' => ['TAG_AUDIO_SAMPLING_RATE', :get_string],
1399
+ 'Audio Sampling Resolution' => ['TAG_AUDIO_SAMPLING_RESOLUTION', :get_string],
1400
+ 'Audio Duration' => ['TAG_AUDIO_DURATION', :get_string],
1401
+ 'Audio Outcue' => ['TAG_AUDIO_OUTCUE', :get_string],
1402
+ 'Job Id' => ['TAG_JOB_ID', :get_string],
1403
+ 'Master Document Id' => ['TAG_MASTER_DOCUMENT_ID', :get_string],
1404
+ 'Short Document Id' => ['TAG_SHORT_DOCUMENT_ID', :get_string],
1405
+ 'Unique Document Id' => ['TAG_UNIQUE_DOCUMENT_ID', :get_string],
1406
+ 'Owner Id' => ['TAG_OWNER_ID', :get_string],
1407
+ 'Object Preview File Format' => ['TAG_OBJECT_PREVIEW_FILE_FORMAT', :get_string],
1408
+ 'Object Preview File Format Version' => ['TAG_OBJECT_PREVIEW_FILE_FORMAT_VERSION', :get_string],
1409
+ 'Object Preview Data' => ['TAG_OBJECT_PREVIEW_DATA', :get_string],
1410
+ }
1411
+ end
1412
+
1413
+ class JfifDirectory < Directory
1414
+ java_import com.drew.metadata.jfif.JfifDirectory
1415
+
1416
+ def self.directory_class
1417
+ com.drew.metadata.jfif.JfifDirectory
1418
+ end
1419
+
1420
+ TAGS = {
1421
+ 'Version' => ['TAG_VERSION', :get_string],
1422
+ 'Units' => ['TAG_UNITS', :get_string],
1423
+ 'Resx' => ['TAG_RESX', :get_string],
1424
+ 'Resy' => ['TAG_RESY', :get_string],
1425
+ }
1426
+ end
1427
+
1428
+ class JpegCommentDirectory < Directory
1429
+ java_import com.drew.metadata.jpeg.JpegCommentDirectory
1430
+
1431
+ def self.directory_class
1432
+ com.drew.metadata.jpeg.JpegCommentDirectory
1433
+ end
1434
+
1435
+ TAGS = {
1436
+ 'Comment' => ['TAG_COMMENT', :get_string],
1437
+ }
1438
+ end
1439
+
1440
+ class JpegDirectory < Directory
1441
+ java_import com.drew.metadata.jpeg.JpegDirectory
1442
+
1443
+ def self.directory_class
1444
+ com.drew.metadata.jpeg.JpegDirectory
1445
+ end
1446
+
1447
+ TAGS = {
1448
+ 'Compression Type' => ['TAG_COMPRESSION_TYPE', :get_string],
1449
+ 'Data Precision' => ['TAG_DATA_PRECISION', :get_string],
1450
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
1451
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
1452
+ 'Number Of Components' => ['TAG_NUMBER_OF_COMPONENTS', :get_string],
1453
+ 'Component Data 1' => ['TAG_COMPONENT_DATA_1', :get_string],
1454
+ 'Component Data 2' => ['TAG_COMPONENT_DATA_2', :get_string],
1455
+ 'Component Data 3' => ['TAG_COMPONENT_DATA_3', :get_string],
1456
+ 'Component Data 4' => ['TAG_COMPONENT_DATA_4', :get_string],
1457
+ }
1458
+ end
1459
+
1460
+ class PhotoshopDirectory < Directory
1461
+ java_import com.drew.metadata.photoshop.PhotoshopDirectory
1462
+
1463
+ def self.directory_class
1464
+ com.drew.metadata.photoshop.PhotoshopDirectory
1465
+ end
1466
+
1467
+ TAGS = {
1468
+ 'Channels Rows Columns Depth Mode' => ['TAG_CHANNELS_ROWS_COLUMNS_DEPTH_MODE', :get_string],
1469
+ 'Mac Print Info' => ['TAG_MAC_PRINT_INFO', :get_string],
1470
+ 'Xml' => ['TAG_XML', :get_string],
1471
+ 'Indexed Color Table' => ['TAG_INDEXED_COLOR_TABLE', :get_string],
1472
+ 'Resolution Info' => ['TAG_RESOLUTION_INFO', :get_string],
1473
+ 'Alpha Channels' => ['TAG_ALPHA_CHANNELS', :get_string],
1474
+ 'Display Info' => ['TAG_DISPLAY_INFO', :get_string],
1475
+ 'Caption' => ['TAG_CAPTION', :get_string],
1476
+ 'Border Information' => ['TAG_BORDER_INFORMATION', :get_string],
1477
+ 'Background Color' => ['TAG_BACKGROUND_COLOR', :get_string],
1478
+ 'Print Flags' => ['TAG_PRINT_FLAGS', :get_string],
1479
+ 'Grayscale And Multichannel Halftoning Information' => ['TAG_GRAYSCALE_AND_MULTICHANNEL_HALFTONING_INFORMATION', :get_string],
1480
+ 'Color Halftoning Information' => ['TAG_COLOR_HALFTONING_INFORMATION', :get_string],
1481
+ 'Duotone Halftoning Information' => ['TAG_DUOTONE_HALFTONING_INFORMATION', :get_string],
1482
+ 'Grayscale And Multichannel Transfer Function' => ['TAG_GRAYSCALE_AND_MULTICHANNEL_TRANSFER_FUNCTION', :get_string],
1483
+ 'Color Transfer Functions' => ['TAG_COLOR_TRANSFER_FUNCTIONS', :get_string],
1484
+ 'Duotone Transfer Functions' => ['TAG_DUOTONE_TRANSFER_FUNCTIONS', :get_string],
1485
+ 'Duotone Image Information' => ['TAG_DUOTONE_IMAGE_INFORMATION', :get_string],
1486
+ 'Effective Black And White Values' => ['TAG_EFFECTIVE_BLACK_AND_WHITE_VALUES', :get_string],
1487
+ 'Eps Options' => ['TAG_EPS_OPTIONS', :get_string],
1488
+ 'Quick Mask Information' => ['TAG_QUICK_MASK_INFORMATION', :get_string],
1489
+ 'Layer State Information' => ['TAG_LAYER_STATE_INFORMATION', :get_string],
1490
+ 'Layers Group Information' => ['TAG_LAYERS_GROUP_INFORMATION', :get_string],
1491
+ 'Iptc' => ['TAG_IPTC', :get_string],
1492
+ 'Image Mode For Raw Format Files' => ['TAG_IMAGE_MODE_FOR_RAW_FORMAT_FILES', :get_string],
1493
+ 'Jpeg Quality' => ['TAG_JPEG_QUALITY', :get_string],
1494
+ 'Grid And Guides Information' => ['TAG_GRID_AND_GUIDES_INFORMATION', :get_string],
1495
+ 'Thumbnail Old' => ['TAG_THUMBNAIL_OLD', :get_string],
1496
+ 'Copyright' => ['TAG_COPYRIGHT', :get_string],
1497
+ 'Url' => ['TAG_URL', :get_string],
1498
+ 'Thumbnail' => ['TAG_THUMBNAIL', :get_string],
1499
+ 'Global Angle' => ['TAG_GLOBAL_ANGLE', :get_string],
1500
+ 'Icc Untagged Profile' => ['TAG_ICC_UNTAGGED_PROFILE', :get_string],
1501
+ 'Seed Number' => ['TAG_SEED_NUMBER', :get_string],
1502
+ 'Global Altitude' => ['TAG_GLOBAL_ALTITUDE', :get_string],
1503
+ 'Slices' => ['TAG_SLICES', :get_string],
1504
+ 'Url List' => ['TAG_URL_LIST', :get_string],
1505
+ 'Version' => ['TAG_VERSION', :get_string],
1506
+ 'Caption Digest' => ['TAG_CAPTION_DIGEST', :get_string],
1507
+ 'Print Scale' => ['TAG_PRINT_SCALE', :get_string],
1508
+ 'Pixel Aspect Ratio' => ['TAG_PIXEL_ASPECT_RATIO', :get_string],
1509
+ 'Print Info' => ['TAG_PRINT_INFO', :get_string],
1510
+ 'Print Flags Info' => ['TAG_PRINT_FLAGS_INFO', :get_string],
1511
+ }
1512
+ end
1513
+
1514
+ class PsdHeaderDirectory < Directory
1515
+ java_import com.drew.metadata.photoshop.PsdHeaderDirectory
1516
+
1517
+ def self.directory_class
1518
+ com.drew.metadata.photoshop.PsdHeaderDirectory
1519
+ end
1520
+
1521
+ TAGS = {
1522
+ 'Channel Count' => ['TAG_CHANNEL_COUNT', :get_string],
1523
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
1524
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
1525
+ 'Bits Per Channel' => ['TAG_BITS_PER_CHANNEL', :get_string],
1526
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
1527
+ }
1528
+ end
1529
+
1530
+ class PngChromaticitiesDirectory < Directory
1531
+ java_import com.drew.metadata.png.PngChromaticitiesDirectory
1532
+
1533
+ def self.directory_class
1534
+ com.drew.metadata.png.PngChromaticitiesDirectory
1535
+ end
1536
+
1537
+ TAGS = {
1538
+ 'White Point X' => ['TAG_WHITE_POINT_X', :get_string],
1539
+ 'White Point Y' => ['TAG_WHITE_POINT_Y', :get_string],
1540
+ 'Red X' => ['TAG_RED_X', :get_string],
1541
+ 'Red Y' => ['TAG_RED_Y', :get_string],
1542
+ 'Green X' => ['TAG_GREEN_X', :get_string],
1543
+ 'Green Y' => ['TAG_GREEN_Y', :get_string],
1544
+ 'Blue X' => ['TAG_BLUE_X', :get_string],
1545
+ 'Blue Y' => ['TAG_BLUE_Y', :get_string],
1546
+ }
1547
+ end
1548
+
1549
+ class PngDirectory < Directory
1550
+ java_import com.drew.metadata.png.PngDirectory
1551
+
1552
+ def self.directory_class
1553
+ com.drew.metadata.png.PngDirectory
1554
+ end
1555
+
1556
+ TAGS = {
1557
+ 'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
1558
+ 'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
1559
+ 'Bits Per Sample' => ['TAG_BITS_PER_SAMPLE', :get_string],
1560
+ 'Color Type' => ['TAG_COLOR_TYPE', :get_string],
1561
+ 'Compression Type' => ['TAG_COMPRESSION_TYPE', :get_string],
1562
+ 'Filter Method' => ['TAG_FILTER_METHOD', :get_string],
1563
+ 'Interlace Method' => ['TAG_INTERLACE_METHOD', :get_string],
1564
+ 'Palette Size' => ['TAG_PALETTE_SIZE', :get_string],
1565
+ 'Palette Has Transparency' => ['TAG_PALETTE_HAS_TRANSPARENCY', :get_string],
1566
+ 'Srgb Rendering Intent' => ['TAG_SRGB_RENDERING_INTENT', :get_string],
1567
+ 'Gamma' => ['TAG_GAMMA', :get_string],
1568
+ 'Profile Name' => ['TAG_PROFILE_NAME', :get_string],
1569
+ 'Textual Data' => ['TAG_TEXTUAL_DATA', :get_string],
1570
+ 'Last Modification Time' => ['TAG_LAST_MODIFICATION_TIME', :get_string],
1571
+ 'Background Color' => ['TAG_BACKGROUND_COLOR', :get_string],
1572
+ }
1573
+ end
1574
+
1575
+ class XmpDirectory < Directory
1576
+ java_import com.drew.metadata.xmp.XmpDirectory
1577
+
1578
+ def self.directory_class
1579
+ com.drew.metadata.xmp.XmpDirectory
1580
+ end
1581
+
1582
+ TAGS = {
1583
+ 'Make' => ['TAG_MAKE', :get_string],
1584
+ 'Model' => ['TAG_MODEL', :get_string],
1585
+ 'Exposure Time' => ['TAG_EXPOSURE_TIME', :get_string],
1586
+ 'Shutter Speed' => ['TAG_SHUTTER_SPEED', :get_string],
1587
+ 'F Number' => ['TAG_F_NUMBER', :get_string],
1588
+ 'Lens Info' => ['TAG_LENS_INFO', :get_string],
1589
+ 'Lens' => ['TAG_LENS', :get_string],
1590
+ 'Camera Serial Number' => ['TAG_CAMERA_SERIAL_NUMBER', :get_string],
1591
+ 'Firmware' => ['TAG_FIRMWARE', :get_string],
1592
+ 'Focal Length' => ['TAG_FOCAL_LENGTH', :get_string],
1593
+ 'Aperture Value' => ['TAG_APERTURE_VALUE', :get_string],
1594
+ 'Exposure Program' => ['TAG_EXPOSURE_PROGRAM', :get_string],
1595
+ 'Datetime Original' => ['TAG_DATETIME_ORIGINAL', :get_string],
1596
+ 'Datetime Digitized' => ['TAG_DATETIME_DIGITIZED', :get_string],
1597
+ 'Rating' => ['TAG_RATING', :get_string],
1598
+ }
1599
+ end
1600
+
1601
+
1602
+ DIRECTORY_MAP = {
1603
+ 'Adobe Jpeg' => AdobeJpegDirectory,
1604
+ 'Bmp Header' => BmpHeaderDirectory,
1605
+ 'Exif IFD0' => ExifIFD0Directory,
1606
+ 'Exif Interop' => ExifInteropDirectory,
1607
+ 'Exif Sub IFD' => ExifSubIFDDirectory,
1608
+ 'Exif Thumbnail' => ExifThumbnailDirectory,
1609
+ 'Gps' => GpsDirectory,
1610
+ 'Canon Makernote' => CanonMakernoteDirectory,
1611
+ 'Casio Type 1 Makernote' => CasioType1MakernoteDirectory,
1612
+ 'Casio Type 2 Makernote' => CasioType2MakernoteDirectory,
1613
+ 'Fujifilm Makernote' => FujifilmMakernoteDirectory,
1614
+ 'Kyocera Makernote' => KyoceraMakernoteDirectory,
1615
+ 'Leica Makernote' => LeicaMakernoteDirectory,
1616
+ 'Nikon Type 1 Makernote' => NikonType1MakernoteDirectory,
1617
+ 'Nikon Type 2 Makernote' => NikonType2MakernoteDirectory,
1618
+ 'Olympus Makernote' => OlympusMakernoteDirectory,
1619
+ 'Panasonic Makernote' => PanasonicMakernoteDirectory,
1620
+ 'Pentax Makernote' => PentaxMakernoteDirectory,
1621
+ 'Ricoh Makernote' => RicohMakernoteDirectory,
1622
+ 'Sanyo Makernote' => SanyoMakernoteDirectory,
1623
+ 'Sigma Makernote' => SigmaMakernoteDirectory,
1624
+ 'Sony Type 1 Makernote' => SonyType1MakernoteDirectory,
1625
+ 'Sony Type 6 Makernote' => SonyType6MakernoteDirectory,
1626
+ 'Gif Header' => GifHeaderDirectory,
1627
+ 'Icc' => IccDirectory,
1628
+ 'Iptc' => IptcDirectory,
1629
+ 'Jfif' => JfifDirectory,
1630
+ 'Jpeg Comment' => JpegCommentDirectory,
1631
+ 'Jpeg' => JpegDirectory,
1632
+ 'Photoshop' => PhotoshopDirectory,
1633
+ 'Psd Header' => PsdHeaderDirectory,
1634
+ 'Png Chromaticities' => PngChromaticitiesDirectory,
1635
+ 'Png' => PngDirectory,
1636
+ 'Xmp' => XmpDirectory,
1637
+
1638
+ # Aliases
1639
+ 'IFD0' => ExifIFD0Directory,
1640
+ }
1641
+ end