image_voodoo 0.8.8 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,10 @@
1
- require 'xmpcore-5.1.2.jar'
2
- require 'metadata-extractor-2.7.0.jar'
1
+ # frozen_string_literal: true
2
+
3
+ require 'image_voodoo_jars'
4
+ require 'stringio'
3
5
 
4
6
  class ImageVoodoo
7
+ # Metadata contained within the image.
5
8
  class Metadata
6
9
  def initialize(io)
7
10
  @metadata = com.drew.imaging.ImageMetadataReader.read_metadata io
@@ -15,10 +18,12 @@ class ImageVoodoo
15
18
  #
16
19
  # See Directory#exists? if you want to make sure the group you are
17
20
  # requesting actually exists or not.
18
- #
21
+ #
19
22
  def [](dirname)
20
23
  dirclass = DIRECTORY_MAP[dirname.to_s]
21
- raise ArgumentError.new "Uknown metadata group: #{dirname}" unless dirclass
24
+
25
+ raise ArgumentError, "Uknown metadata group: #{dirname}" unless dirclass
26
+
22
27
  dirclass.new @metadata
23
28
  end
24
29
 
@@ -45,17 +50,34 @@ class ImageVoodoo
45
50
  def width
46
51
  self['Exif Sub IFD']['Exif Image Width']
47
52
  end
53
+
54
+ def to_s
55
+ out = StringIO.new
56
+ out.puts "[{dir name}] - {tag name} = {tag descr}"
57
+ out.puts "---------------------------------------"
58
+ @metadata.directories.each do |directory|
59
+ directory.tags.each do |tag|
60
+ out.puts "[#{directory.name}] - #{tag.tag_name} = #{tag.description}"
61
+ end
62
+ end
63
+ out.string
64
+ end
48
65
  end
49
66
 
67
+ # All metadata are contained within Directories. An image may have n
68
+ # directories. You have to know a bit about the image to khow what to
69
+ # look at (e.g. a image from a Pentax camera may have a PentaxMakerNote
70
+ # directory.
50
71
  class Directory
51
72
  def initialize(metadata)
52
- @directory = metadata.get_directory self.class.directory_class.java_class
73
+ jclass = self.class.directory_class.java_class
74
+ @directory = metadata.get_first_directory_of_type jclass
53
75
  end
54
76
 
55
77
  ##
56
78
  # Does the directory you requested exist as metadata for this image.
57
79
  def exists?
58
- !!@directory
80
+ @directory
59
81
  end
60
82
 
61
83
  ##
@@ -63,14 +85,20 @@ class ImageVoodoo
63
85
  # defined.
64
86
  def [](tag_name)
65
87
  return nil unless @directory
88
+
66
89
  (tag_type, tag_method) = self.class::TAGS[tag_name.to_s]
67
- raise ArgumentError.new "Unkown tag_name: #{tag_name}" unless tag_type
90
+
91
+ raise ArgumentError, "Unkown tag_name: #{tag_name}" unless tag_type
92
+
68
93
  java_tag_type = self.class.directory_class.const_get tag_type
94
+
69
95
  return nil unless @directory.contains_tag java_tag_type
96
+
70
97
  @directory.__send__ tag_method, java_tag_type
71
98
  end
72
99
  end
73
100
 
101
+ # GENERATED
74
102
  class AdobeJpegDirectory < Directory
75
103
  java_import com.drew.metadata.adobe.AdobeJpegDirectory
76
104
 
@@ -82,10 +110,11 @@ class ImageVoodoo
82
110
  'Dct Encode Version' => ['TAG_DCT_ENCODE_VERSION', :get_string],
83
111
  'App14 Flags0' => ['TAG_APP14_FLAGS0', :get_string],
84
112
  'App14 Flags1' => ['TAG_APP14_FLAGS1', :get_string],
85
- 'Color Transform' => ['TAG_COLOR_TRANSFORM', :get_string],
86
- }
113
+ 'Color Transform' => ['TAG_COLOR_TRANSFORM', :get_string]
114
+ }.freeze
87
115
  end
88
116
 
117
+ # GENERATED
89
118
  class BmpHeaderDirectory < Directory
90
119
  java_import com.drew.metadata.bmp.BmpHeaderDirectory
91
120
 
@@ -103,10 +132,11 @@ class ImageVoodoo
103
132
  'X Pixels Per Meter' => ['TAG_X_PIXELS_PER_METER', :get_string],
104
133
  'Y Pixels Per Meter' => ['TAG_Y_PIXELS_PER_METER', :get_string],
105
134
  'Palette Colour Count' => ['TAG_PALETTE_COLOUR_COUNT', :get_string],
106
- 'Important Colour Count' => ['TAG_IMPORTANT_COLOUR_COUNT', :get_string],
107
- }
135
+ 'Important Colour Count' => ['TAG_IMPORTANT_COLOUR_COUNT', :get_string]
136
+ }.freeze
108
137
  end
109
138
 
139
+ # GENERATED
110
140
  class ExifIFD0Directory < Directory
111
141
  java_import com.drew.metadata.exif.ExifIFD0Directory
112
142
 
@@ -138,10 +168,11 @@ class ImageVoodoo
138
168
  'Win Comment' => ['TAG_WIN_COMMENT', :get_string],
139
169
  'Win Author' => ['TAG_WIN_AUTHOR', :get_string],
140
170
  'Win Keywords' => ['TAG_WIN_KEYWORDS', :get_string],
141
- 'Win Subject' => ['TAG_WIN_SUBJECT', :get_string],
142
- }
171
+ 'Win Subject' => ['TAG_WIN_SUBJECT', :get_string]
172
+ }.freeze
143
173
  end
144
174
 
175
+ # GENERATED
145
176
  class ExifInteropDirectory < Directory
146
177
  java_import com.drew.metadata.exif.ExifInteropDirectory
147
178
 
@@ -154,10 +185,11 @@ class ImageVoodoo
154
185
  'Interop Version' => ['TAG_INTEROP_VERSION', :get_string],
155
186
  'Related Image File Format' => ['TAG_RELATED_IMAGE_FILE_FORMAT', :get_string],
156
187
  'Related Image Width' => ['TAG_RELATED_IMAGE_WIDTH', :get_long],
157
- 'Related Image Length' => ['TAG_RELATED_IMAGE_LENGTH', :get_long],
158
- }
188
+ 'Related Image Length' => ['TAG_RELATED_IMAGE_LENGTH', :get_long]
189
+ }.freeze
159
190
  end
160
191
 
192
+ # GENERATED
161
193
  class ExifSubIFDDirectory < Directory
162
194
  java_import com.drew.metadata.exif.ExifSubIFDDirectory
163
195
 
@@ -270,10 +302,11 @@ class ImageVoodoo
270
302
  'Lens Model' => ['TAG_LENS_MODEL', :get_string],
271
303
  'Lens Serial Number' => ['TAG_LENS_SERIAL_NUMBER', :get_string],
272
304
  'Gamma' => ['TAG_GAMMA', :get_string],
273
- 'Lens' => ['TAG_LENS', :get_string],
274
- }
305
+ 'Lens' => ['TAG_LENS', :get_string]
306
+ }.freeze
275
307
  end
276
308
 
309
+ # GENERATED
277
310
  class ExifThumbnailDirectory < Directory
278
311
  java_import com.drew.metadata.exif.ExifThumbnailDirectory
279
312
 
@@ -301,10 +334,11 @@ class ImageVoodoo
301
334
  'Ycbcr Coefficients' => ['TAG_YCBCR_COEFFICIENTS', :get_rational_array],
302
335
  'Ycbcr Subsampling' => ['TAG_YCBCR_SUBSAMPLING', :get_int_array],
303
336
  'Ycbcr Positioning' => ['TAG_YCBCR_POSITIONING', :get_int],
304
- 'Reference Black White' => ['TAG_REFERENCE_BLACK_WHITE', :get_rational_array],
305
- }
337
+ 'Reference Black White' => ['TAG_REFERENCE_BLACK_WHITE', :get_rational_array]
338
+ }.freeze
306
339
  end
307
340
 
341
+ # GENERATED
308
342
  class GpsDirectory < Directory
309
343
  java_import com.drew.metadata.exif.GpsDirectory
310
344
 
@@ -343,10 +377,11 @@ class ImageVoodoo
343
377
  'Processing Method' => ['TAG_PROCESSING_METHOD', :get_string],
344
378
  'Area Information' => ['TAG_AREA_INFORMATION', :get_string],
345
379
  'Date Stamp' => ['TAG_DATE_STAMP', :get_string],
346
- 'Differential' => ['TAG_DIFFERENTIAL', :get_string],
347
- }
380
+ 'Differential' => ['TAG_DIFFERENTIAL', :get_string]
381
+ }.freeze
348
382
  end
349
383
 
384
+ # GENERATED
350
385
  class CanonMakernoteDirectory < Directory
351
386
  java_import com.drew.metadata.exif.makernotes.CanonMakernoteDirectory
352
387
 
@@ -462,16 +497,12 @@ class ImageVoodoo
462
497
  'Target Aperture' => ['TAG_TARGET_APERTURE', :get_string],
463
498
  'Target Exposure Time' => ['TAG_TARGET_EXPOSURE_TIME', :get_string],
464
499
  'Exposure Compensation' => ['TAG_EXPOSURE_COMPENSATION', :get_string],
465
- 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
466
500
  'Slow Shutter' => ['TAG_SLOW_SHUTTER', :get_string],
467
- 'Sequence Number' => ['TAG_SEQUENCE_NUMBER', :get_string],
468
501
  'Optical Zoom Code' => ['TAG_OPTICAL_ZOOM_CODE', :get_string],
469
502
  'Camera Temperature' => ['TAG_CAMERA_TEMPERATURE', :get_string],
470
503
  'Flash Guide Number' => ['TAG_FLASH_GUIDE_NUMBER', :get_string],
471
504
  'Af Points In Focus' => ['TAG_AF_POINTS_IN_FOCUS', :get_string],
472
505
  '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
506
  'Control Mode' => ['TAG_CONTROL_MODE', :get_string],
476
507
  'Focus Distance Upper' => ['TAG_FOCUS_DISTANCE_UPPER', :get_string],
477
508
  'Focus Distance Lower' => ['TAG_FOCUS_DISTANCE_LOWER', :get_string],
@@ -496,7 +527,6 @@ class ImageVoodoo
496
527
  'Af Area Height' => ['TAG_AF_AREA_HEIGHT', :get_string],
497
528
  'Af Area X Positions' => ['TAG_AF_AREA_X_POSITIONS', :get_string],
498
529
  'Af Area Y Positions' => ['TAG_AF_AREA_Y_POSITIONS', :get_string],
499
- 'Af Points In Focus' => ['TAG_AF_POINTS_IN_FOCUS', :get_string],
500
530
  'Primary Af Point 1' => ['TAG_PRIMARY_AF_POINT_1', :get_string],
501
531
  'Primary Af Point 2' => ['TAG_PRIMARY_AF_POINT_2', :get_string],
502
532
  'Canon Custom Function Long Exposure Noise Reduction' => ['TAG_CANON_CUSTOM_FUNCTION_LONG_EXPOSURE_NOISE_REDUCTION', :get_string],
@@ -511,10 +541,11 @@ class ImageVoodoo
511
541
  'Canon Custom Function Fill Flash Reduction' => ['TAG_CANON_CUSTOM_FUNCTION_FILL_FLASH_REDUCTION', :get_string],
512
542
  'Canon Custom Function Menu Button Return' => ['TAG_CANON_CUSTOM_FUNCTION_MENU_BUTTON_RETURN', :get_string],
513
543
  '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
- }
544
+ 'Canon Custom Function Sensor Cleaning' => ['TAG_CANON_CUSTOM_FUNCTION_SENSOR_CLEANING', :get_string]
545
+ }.freeze
516
546
  end
517
547
 
548
+ # GENERATED
518
549
  class CasioType1MakernoteDirectory < Directory
519
550
  java_import com.drew.metadata.exif.makernotes.CasioType1MakernoteDirectory
520
551
 
@@ -542,10 +573,11 @@ class ImageVoodoo
542
573
  'Unknown 6' => ['TAG_UNKNOWN_6', :get_string],
543
574
  'Unknown 7' => ['TAG_UNKNOWN_7', :get_string],
544
575
  'Unknown 8' => ['TAG_UNKNOWN_8', :get_string],
545
- 'Ccd Sensitivity' => ['TAG_CCD_SENSITIVITY', :get_string],
546
- }
576
+ 'Ccd Sensitivity' => ['TAG_CCD_SENSITIVITY', :get_string]
577
+ }.freeze
547
578
  end
548
579
 
580
+ # GENERATED
549
581
  class CasioType2MakernoteDirectory < Directory
550
582
  java_import com.drew.metadata.exif.makernotes.CasioType2MakernoteDirectory
551
583
 
@@ -581,10 +613,11 @@ class ImageVoodoo
581
613
  'Ccd Iso Sensitivity' => ['TAG_CCD_ISO_SENSITIVITY', :get_int],
582
614
  'Colour Mode' => ['TAG_COLOUR_MODE', :get_string],
583
615
  'Enhancement' => ['TAG_ENHANCEMENT', :get_string],
584
- 'Filter' => ['TAG_FILTER', :get_string],
585
- }
616
+ 'Filter' => ['TAG_FILTER', :get_string]
617
+ }.freeze
586
618
  end
587
619
 
620
+ # GENERATED
588
621
  class FujifilmMakernoteDirectory < Directory
589
622
  java_import com.drew.metadata.exif.makernotes.FujifilmMakernoteDirectory
590
623
 
@@ -636,10 +669,11 @@ class ImageVoodoo
636
669
  'File Source' => ['TAG_FILE_SOURCE', :get_string],
637
670
  'Order Number' => ['TAG_ORDER_NUMBER', :get_string],
638
671
  'Frame Number' => ['TAG_FRAME_NUMBER', :get_string],
639
- 'Parallax' => ['TAG_PARALLAX', :get_string],
640
- }
672
+ 'Parallax' => ['TAG_PARALLAX', :get_string]
673
+ }.freeze
641
674
  end
642
675
 
676
+ # GENERATED
643
677
  class KyoceraMakernoteDirectory < Directory
644
678
  java_import com.drew.metadata.exif.makernotes.KyoceraMakernoteDirectory
645
679
 
@@ -649,10 +683,11 @@ class ImageVoodoo
649
683
 
650
684
  TAGS = {
651
685
  'Proprietary Thumbnail' => ['TAG_PROPRIETARY_THUMBNAIL', :get_string],
652
- 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
653
- }
686
+ 'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string]
687
+ }.freeze
654
688
  end
655
689
 
690
+ # GENERATED
656
691
  class LeicaMakernoteDirectory < Directory
657
692
  java_import com.drew.metadata.exif.makernotes.LeicaMakernoteDirectory
658
693
 
@@ -678,10 +713,11 @@ class ImageVoodoo
678
713
  'Ccd Board Version' => ['TAG_CCD_BOARD_VERSION', :get_string],
679
714
  'Controller Board Version' => ['TAG_CONTROLLER_BOARD_VERSION', :get_string],
680
715
  'M16 C Version' => ['TAG_M16_C_VERSION', :get_string],
681
- 'Image Id Number' => ['TAG_IMAGE_ID_NUMBER', :get_string],
682
- }
716
+ 'Image Id Number' => ['TAG_IMAGE_ID_NUMBER', :get_string]
717
+ }.freeze
683
718
  end
684
719
 
720
+ # GENERATED
685
721
  class NikonType1MakernoteDirectory < Directory
686
722
  java_import com.drew.metadata.exif.makernotes.NikonType1MakernoteDirectory
687
723
 
@@ -700,10 +736,11 @@ class ImageVoodoo
700
736
  'Unknown 2' => ['TAG_UNKNOWN_2', :get_string],
701
737
  'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
702
738
  'Converter' => ['TAG_CONVERTER', :get_string],
703
- 'Unknown 3' => ['TAG_UNKNOWN_3', :get_string],
704
- }
739
+ 'Unknown 3' => ['TAG_UNKNOWN_3', :get_string]
740
+ }.freeze
705
741
  end
706
742
 
743
+ # GENERATED
707
744
  class NikonType2MakernoteDirectory < Directory
708
745
  java_import com.drew.metadata.exif.makernotes.NikonType2MakernoteDirectory
709
746
 
@@ -828,10 +865,11 @@ class ImageVoodoo
828
865
  'Nikon Scan' => ['TAG_NIKON_SCAN', :get_string],
829
866
  'Unknown 54' => ['TAG_UNKNOWN_54', :get_string],
830
867
  'Nef Bit Depth' => ['TAG_NEF_BIT_DEPTH', :get_string],
831
- 'Unknown 55' => ['TAG_UNKNOWN_55', :get_string],
832
- }
868
+ 'Unknown 55' => ['TAG_UNKNOWN_55', :get_string]
869
+ }.freeze
833
870
  end
834
871
 
872
+ # GENERATED
835
873
  class OlympusMakernoteDirectory < Directory
836
874
  java_import com.drew.metadata.exif.makernotes.OlympusMakernoteDirectory
837
875
 
@@ -893,8 +931,6 @@ class ImageVoodoo
893
931
  'Final Height' => ['TAG_FINAL_HEIGHT', :get_string],
894
932
  'Compression Ratio' => ['TAG_COMPRESSION_RATIO', :get_string],
895
933
  'Exposure Mode' => ['TAG_EXPOSURE_MODE', :get_string],
896
- 'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
897
- 'White Balance' => ['TAG_WHITE_BALANCE', :get_string],
898
934
  'Image Size' => ['TAG_IMAGE_SIZE', :get_string],
899
935
  'Image Quality' => ['TAG_IMAGE_QUALITY', :get_string],
900
936
  'Shooting Mode' => ['TAG_SHOOTING_MODE', :get_string],
@@ -902,14 +938,12 @@ class ImageVoodoo
902
938
  'Apex Film Speed Value' => ['TAG_APEX_FILM_SPEED_VALUE', :get_string],
903
939
  'Apex Shutter Speed Time Value' => ['TAG_APEX_SHUTTER_SPEED_TIME_VALUE', :get_string],
904
940
  'Apex Aperture Value' => ['TAG_APEX_APERTURE_VALUE', :get_string],
905
- 'Macro Mode' => ['TAG_MACRO_MODE', :get_string],
906
941
  'Digital Zoom' => ['TAG_DIGITAL_ZOOM', :get_string],
907
942
  'Exposure Compensation' => ['TAG_EXPOSURE_COMPENSATION', :get_string],
908
943
  'Bracket Step' => ['TAG_BRACKET_STEP', :get_string],
909
944
  'Interval Length' => ['TAG_INTERVAL_LENGTH', :get_string],
910
945
  'Interval Number' => ['TAG_INTERVAL_NUMBER', :get_string],
911
946
  'Focal Length' => ['TAG_FOCAL_LENGTH', :get_string],
912
- 'Focus Distance' => ['TAG_FOCUS_DISTANCE', :get_string],
913
947
  'Flash Fired' => ['TAG_FLASH_FIRED', :get_string],
914
948
  'Date' => ['TAG_DATE', :get_string],
915
949
  'Time' => ['TAG_TIME', :get_string],
@@ -920,8 +954,6 @@ class ImageVoodoo
920
954
  'White Balance Green' => ['TAG_WHITE_BALANCE_GREEN', :get_string],
921
955
  'White Balance Blue' => ['TAG_WHITE_BALANCE_BLUE', :get_string],
922
956
  'Saturation' => ['TAG_SATURATION', :get_string],
923
- 'Contrast' => ['TAG_CONTRAST', :get_string],
924
- 'Sharpness' => ['TAG_SHARPNESS', :get_string],
925
957
  'Subject Program' => ['TAG_SUBJECT_PROGRAM', :get_string],
926
958
  'Flash Compensation' => ['TAG_FLASH_COMPENSATION', :get_string],
927
959
  'Iso Setting' => ['TAG_ISO_SETTING', :get_string],
@@ -936,12 +968,12 @@ class ImageVoodoo
936
968
  'Spot Focus Point X Coordinate' => ['TAG_SPOT_FOCUS_POINT_X_COORDINATE', :get_string],
937
969
  'Spot Focus Point Y Coordinate' => ['TAG_SPOT_FOCUS_POINT_Y_COORDINATE', :get_string],
938
970
  'Wide Focus Zone' => ['TAG_WIDE_FOCUS_ZONE', :get_string],
939
- 'Focus Mode' => ['TAG_FOCUS_MODE', :get_string],
940
971
  'Focus Area' => ['TAG_FOCUS_AREA', :get_string],
941
- 'Dec Switch Position' => ['TAG_DEC_SWITCH_POSITION', :get_string],
942
- }
972
+ 'Dec Switch Position' => ['TAG_DEC_SWITCH_POSITION', :get_string]
973
+ }.freeze
943
974
  end
944
975
 
976
+ # GENERATED
945
977
  class PanasonicMakernoteDirectory < Directory
946
978
  java_import com.drew.metadata.exif.makernotes.PanasonicMakernoteDirectory
947
979
 
@@ -1019,10 +1051,11 @@ class ImageVoodoo
1019
1051
  'Text Stamp 2' => ['TAG_TEXT_STAMP_2', :get_string],
1020
1052
  'Text Stamp 3' => ['TAG_TEXT_STAMP_3', :get_string],
1021
1053
  'Baby Age 1' => ['TAG_BABY_AGE_1', :get_string],
1022
- 'Transform 1' => ['TAG_TRANSFORM_1', :get_string],
1023
- }
1054
+ 'Transform 1' => ['TAG_TRANSFORM_1', :get_string]
1055
+ }.freeze
1024
1056
  end
1025
1057
 
1058
+ # GENERATED
1026
1059
  class PentaxMakernoteDirectory < Directory
1027
1060
  java_import com.drew.metadata.exif.makernotes.PentaxMakernoteDirectory
1028
1061
 
@@ -1044,10 +1077,11 @@ class ImageVoodoo
1044
1077
  'Colour' => ['TAG_COLOUR', :get_string],
1045
1078
  'Print Image Matching Info' => ['TAG_PRINT_IMAGE_MATCHING_INFO', :get_string],
1046
1079
  'Time Zone' => ['TAG_TIME_ZONE', :get_string],
1047
- 'Daylight Savings' => ['TAG_DAYLIGHT_SAVINGS', :get_string],
1048
- }
1080
+ 'Daylight Savings' => ['TAG_DAYLIGHT_SAVINGS', :get_string]
1081
+ }.freeze
1049
1082
  end
1050
1083
 
1084
+ # GENERATED
1051
1085
  class RicohMakernoteDirectory < Directory
1052
1086
  java_import com.drew.metadata.exif.makernotes.RicohMakernoteDirectory
1053
1087
 
@@ -1059,10 +1093,11 @@ class ImageVoodoo
1059
1093
  'Makernote Data Type' => ['TAG_MAKERNOTE_DATA_TYPE', :get_string],
1060
1094
  'Version' => ['TAG_VERSION', :get_string],
1061
1095
  '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
- }
1096
+ 'Ricoh Camera Info Makernote Sub Ifd Pointer' => ['TAG_RICOH_CAMERA_INFO_MAKERNOTE_SUB_IFD_POINTER', :get_string]
1097
+ }.freeze
1064
1098
  end
1065
1099
 
1100
+ # GENERATED
1066
1101
  class SanyoMakernoteDirectory < Directory
1067
1102
  java_import com.drew.metadata.exif.makernotes.SanyoMakernoteDirectory
1068
1103
 
@@ -1097,10 +1132,11 @@ class ImageVoodoo
1097
1132
  'Sequence Shot Interval' => ['TAG_SEQUENCE_SHOT_INTERVAL', :get_string],
1098
1133
  'Flash Mode' => ['TAG_FLASH_MODE', :get_string],
1099
1134
  'Print Im' => ['TAG_PRINT_IM', :get_string],
1100
- 'Data Dump' => ['TAG_DATA_DUMP', :get_string],
1101
- }
1135
+ 'Data Dump' => ['TAG_DATA_DUMP', :get_string]
1136
+ }.freeze
1102
1137
  end
1103
1138
 
1139
+ # GENERATED
1104
1140
  class SigmaMakernoteDirectory < Directory
1105
1141
  java_import com.drew.metadata.exif.makernotes.SigmaMakernoteDirectory
1106
1142
 
@@ -1131,10 +1167,11 @@ class ImageVoodoo
1131
1167
  'Quality' => ['TAG_QUALITY', :get_string],
1132
1168
  'Firmware' => ['TAG_FIRMWARE', :get_string],
1133
1169
  'Software' => ['TAG_SOFTWARE', :get_string],
1134
- 'Auto Bracket' => ['TAG_AUTO_BRACKET', :get_string],
1135
- }
1170
+ 'Auto Bracket' => ['TAG_AUTO_BRACKET', :get_string]
1171
+ }.freeze
1136
1172
  end
1137
1173
 
1174
+ # GENERATED
1138
1175
  class SonyType1MakernoteDirectory < Directory
1139
1176
  java_import com.drew.metadata.exif.makernotes.SonyType1MakernoteDirectory
1140
1177
 
@@ -1207,10 +1244,11 @@ class ImageVoodoo
1207
1244
  'High Iso Noise Reduction 2' => ['TAG_HIGH_ISO_NOISE_REDUCTION_2', :get_string],
1208
1245
  'Intelligent Auto' => ['TAG_INTELLIGENT_AUTO', :get_string],
1209
1246
  'White Balance 2' => ['TAG_WHITE_BALANCE_2', :get_string],
1210
- 'No Print' => ['TAG_NO_PRINT', :get_string],
1211
- }
1247
+ 'No Print' => ['TAG_NO_PRINT', :get_string]
1248
+ }.freeze
1212
1249
  end
1213
1250
 
1251
+ # GENERATED
1214
1252
  class SonyType6MakernoteDirectory < Directory
1215
1253
  java_import com.drew.metadata.exif.makernotes.SonyType6MakernoteDirectory
1216
1254
 
@@ -1222,10 +1260,11 @@ class ImageVoodoo
1222
1260
  'Makernote Thumb Offset' => ['TAG_MAKERNOTE_THUMB_OFFSET', :get_string],
1223
1261
  'Makernote Thumb Length' => ['TAG_MAKERNOTE_THUMB_LENGTH', :get_string],
1224
1262
  'Unknown 1' => ['TAG_UNKNOWN_1', :get_string],
1225
- 'Makernote Thumb Version' => ['TAG_MAKERNOTE_THUMB_VERSION', :get_string],
1226
- }
1263
+ 'Makernote Thumb Version' => ['TAG_MAKERNOTE_THUMB_VERSION', :get_string]
1264
+ }.freeze
1227
1265
  end
1228
1266
 
1267
+ # GENERATED
1229
1268
  class GifHeaderDirectory < Directory
1230
1269
  java_import com.drew.metadata.gif.GifHeaderDirectory
1231
1270
 
@@ -1242,10 +1281,11 @@ class ImageVoodoo
1242
1281
  'Bits Per Pixel' => ['TAG_BITS_PER_PIXEL', :get_string],
1243
1282
  'Has Global Color Table' => ['TAG_HAS_GLOBAL_COLOR_TABLE', :get_string],
1244
1283
  'Transparent Color Index' => ['TAG_TRANSPARENT_COLOR_INDEX', :get_string],
1245
- 'Pixel Aspect Ratio' => ['TAG_PIXEL_ASPECT_RATIO', :get_string],
1246
- }
1284
+ 'Pixel Aspect Ratio' => ['TAG_PIXEL_ASPECT_RATIO', :get_string]
1285
+ }.freeze
1247
1286
  end
1248
1287
 
1288
+ # GENERATED
1249
1289
  class IccDirectory < Directory
1250
1290
  java_import com.drew.metadata.icc.IccDirectory
1251
1291
 
@@ -1318,10 +1358,11 @@ class ImageVoodoo
1318
1358
  'Bfd' => ['TAG_bfd', :get_string],
1319
1359
  'Vued' => ['TAG_vued', :get_string],
1320
1360
  'View' => ['TAG_view', :get_string],
1321
- 'Apple Multi Language Profile Name' => ['TAG_APPLE_MULTI_LANGUAGE_PROFILE_NAME', :get_string],
1322
- }
1361
+ 'Apple Multi Language Profile Name' => ['TAG_APPLE_MULTI_LANGUAGE_PROFILE_NAME', :get_string]
1362
+ }.freeze
1323
1363
  end
1324
1364
 
1365
+ # GENERATED
1325
1366
  class IptcDirectory < Directory
1326
1367
  java_import com.drew.metadata.iptc.IptcDirectory
1327
1368
 
@@ -1406,10 +1447,11 @@ class ImageVoodoo
1406
1447
  'Owner Id' => ['TAG_OWNER_ID', :get_string],
1407
1448
  'Object Preview File Format' => ['TAG_OBJECT_PREVIEW_FILE_FORMAT', :get_string],
1408
1449
  'Object Preview File Format Version' => ['TAG_OBJECT_PREVIEW_FILE_FORMAT_VERSION', :get_string],
1409
- 'Object Preview Data' => ['TAG_OBJECT_PREVIEW_DATA', :get_string],
1410
- }
1450
+ 'Object Preview Data' => ['TAG_OBJECT_PREVIEW_DATA', :get_string]
1451
+ }.freeze
1411
1452
  end
1412
1453
 
1454
+ # GENERATED
1413
1455
  class JfifDirectory < Directory
1414
1456
  java_import com.drew.metadata.jfif.JfifDirectory
1415
1457
 
@@ -1421,10 +1463,11 @@ class ImageVoodoo
1421
1463
  'Version' => ['TAG_VERSION', :get_string],
1422
1464
  'Units' => ['TAG_UNITS', :get_string],
1423
1465
  'Resx' => ['TAG_RESX', :get_string],
1424
- 'Resy' => ['TAG_RESY', :get_string],
1425
- }
1466
+ 'Resy' => ['TAG_RESY', :get_string]
1467
+ }.freeze
1426
1468
  end
1427
1469
 
1470
+ # GENERATED
1428
1471
  class JpegCommentDirectory < Directory
1429
1472
  java_import com.drew.metadata.jpeg.JpegCommentDirectory
1430
1473
 
@@ -1433,10 +1476,11 @@ class ImageVoodoo
1433
1476
  end
1434
1477
 
1435
1478
  TAGS = {
1436
- 'Comment' => ['TAG_COMMENT', :get_string],
1437
- }
1479
+ 'Comment' => ['TAG_COMMENT', :get_string]
1480
+ }.freeze
1438
1481
  end
1439
1482
 
1483
+ # GENERATED
1440
1484
  class JpegDirectory < Directory
1441
1485
  java_import com.drew.metadata.jpeg.JpegDirectory
1442
1486
 
@@ -1453,10 +1497,11 @@ class ImageVoodoo
1453
1497
  'Component Data 1' => ['TAG_COMPONENT_DATA_1', :get_string],
1454
1498
  'Component Data 2' => ['TAG_COMPONENT_DATA_2', :get_string],
1455
1499
  'Component Data 3' => ['TAG_COMPONENT_DATA_3', :get_string],
1456
- 'Component Data 4' => ['TAG_COMPONENT_DATA_4', :get_string],
1457
- }
1500
+ 'Component Data 4' => ['TAG_COMPONENT_DATA_4', :get_string]
1501
+ }.freeze
1458
1502
  end
1459
1503
 
1504
+ # GENERATED
1460
1505
  class PhotoshopDirectory < Directory
1461
1506
  java_import com.drew.metadata.photoshop.PhotoshopDirectory
1462
1507
 
@@ -1507,10 +1552,11 @@ class ImageVoodoo
1507
1552
  'Print Scale' => ['TAG_PRINT_SCALE', :get_string],
1508
1553
  'Pixel Aspect Ratio' => ['TAG_PIXEL_ASPECT_RATIO', :get_string],
1509
1554
  'Print Info' => ['TAG_PRINT_INFO', :get_string],
1510
- 'Print Flags Info' => ['TAG_PRINT_FLAGS_INFO', :get_string],
1511
- }
1555
+ 'Print Flags Info' => ['TAG_PRINT_FLAGS_INFO', :get_string]
1556
+ }.freeze
1512
1557
  end
1513
1558
 
1559
+ # GENERATED
1514
1560
  class PsdHeaderDirectory < Directory
1515
1561
  java_import com.drew.metadata.photoshop.PsdHeaderDirectory
1516
1562
 
@@ -1523,10 +1569,11 @@ class ImageVoodoo
1523
1569
  'Image Height' => ['TAG_IMAGE_HEIGHT', :get_long],
1524
1570
  'Image Width' => ['TAG_IMAGE_WIDTH', :get_long],
1525
1571
  'Bits Per Channel' => ['TAG_BITS_PER_CHANNEL', :get_string],
1526
- 'Color Mode' => ['TAG_COLOR_MODE', :get_string],
1527
- }
1572
+ 'Color Mode' => ['TAG_COLOR_MODE', :get_string]
1573
+ }.freeze
1528
1574
  end
1529
1575
 
1576
+ # GENERATED
1530
1577
  class PngChromaticitiesDirectory < Directory
1531
1578
  java_import com.drew.metadata.png.PngChromaticitiesDirectory
1532
1579
 
@@ -1542,10 +1589,11 @@ class ImageVoodoo
1542
1589
  'Green X' => ['TAG_GREEN_X', :get_string],
1543
1590
  'Green Y' => ['TAG_GREEN_Y', :get_string],
1544
1591
  'Blue X' => ['TAG_BLUE_X', :get_string],
1545
- 'Blue Y' => ['TAG_BLUE_Y', :get_string],
1546
- }
1592
+ 'Blue Y' => ['TAG_BLUE_Y', :get_string]
1593
+ }.freeze
1547
1594
  end
1548
1595
 
1596
+ # GENERATED
1549
1597
  class PngDirectory < Directory
1550
1598
  java_import com.drew.metadata.png.PngDirectory
1551
1599
 
@@ -1568,10 +1616,11 @@ class ImageVoodoo
1568
1616
  'Profile Name' => ['TAG_PROFILE_NAME', :get_string],
1569
1617
  'Textual Data' => ['TAG_TEXTUAL_DATA', :get_string],
1570
1618
  'Last Modification Time' => ['TAG_LAST_MODIFICATION_TIME', :get_string],
1571
- 'Background Color' => ['TAG_BACKGROUND_COLOR', :get_string],
1572
- }
1619
+ 'Background Color' => ['TAG_BACKGROUND_COLOR', :get_string]
1620
+ }.freeze
1573
1621
  end
1574
1622
 
1623
+ # GENERATED
1575
1624
  class XmpDirectory < Directory
1576
1625
  java_import com.drew.metadata.xmp.XmpDirectory
1577
1626
 
@@ -1594,11 +1643,10 @@ class ImageVoodoo
1594
1643
  'Exposure Program' => ['TAG_EXPOSURE_PROGRAM', :get_string],
1595
1644
  'Datetime Original' => ['TAG_DATETIME_ORIGINAL', :get_string],
1596
1645
  'Datetime Digitized' => ['TAG_DATETIME_DIGITIZED', :get_string],
1597
- 'Rating' => ['TAG_RATING', :get_string],
1598
- }
1646
+ 'Rating' => ['TAG_RATING', :get_string]
1647
+ }.freeze
1599
1648
  end
1600
1649
 
1601
-
1602
1650
  DIRECTORY_MAP = {
1603
1651
  'Adobe Jpeg' => AdobeJpegDirectory,
1604
1652
  'Bmp Header' => BmpHeaderDirectory,
@@ -1636,6 +1684,6 @@ class ImageVoodoo
1636
1684
  'Xmp' => XmpDirectory,
1637
1685
 
1638
1686
  # Aliases
1639
- 'IFD0' => ExifIFD0Directory,
1640
- }
1687
+ 'IFD0' => ExifIFD0Directory
1688
+ }.freeze
1641
1689
  end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ImageVoodoo; NEEDS_HEAD = true; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ImageVoodoo
2
- VERSION = "0.8.8"
4
+ VERSION = '0.9.2'
3
5
  end