image_voodoo 0.8.8 → 0.9.2
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.
- checksums.yaml +5 -5
- data/.gitignore +4 -0
- data/.rubocop.yml +165 -0
- data/.travis.yml +16 -1
- data/Gemfile +5 -0
- data/Jars.lock +3 -0
- data/Rakefile +14 -4
- data/bin/image_voodoo +73 -84
- data/image_voodoo.gemspec +14 -7
- data/lib/image_science.rb +3 -1
- data/lib/image_voodoo/awt/core_ext/buffered_image.rb +15 -0
- data/lib/image_voodoo/awt/core_ext/graphics2d.rb +15 -0
- data/lib/image_voodoo/awt/shapes.rb +41 -3
- data/lib/image_voodoo/awt.rb +162 -152
- data/lib/image_voodoo/gae.rb +12 -6
- data/lib/image_voodoo/metadata.rb +138 -90
- data/lib/image_voodoo/needs_head.rb +3 -0
- data/lib/image_voodoo/version.rb +3 -1
- data/lib/image_voodoo.rb +47 -96
- data/samples/bench.rb +30 -36
- data/samples/file_greyscale.rb +2 -0
- data/samples/file_thumbnail.rb +2 -0
- data/samples/file_view.rb +4 -1
- data/samples/{in-memory.rb → in_memory.rb} +2 -0
- data/samples/lossy.rb +2 -0
- data/test/test_image_science.rb +34 -74
- data/test/test_image_voodoo.rb +84 -0
- data/test/test_metadata.rb +31 -16
- data/test/test_shapes.rb +23 -0
- data/tools/gen.rb +34 -27
- metadata +87 -10
- data/vendor/metadata-extractor-2.7.0.jar +0 -0
- data/vendor/xmpcore-5.1.2.jar +0 -0
@@ -1,7 +1,10 @@
|
|
1
|
-
|
2
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/image_voodoo/version.rb
CHANGED