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.
- 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