exiftool 0.2.0
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 +7 -0
- data/.gitignore +4 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/README.md +113 -0
- data/Rakefile +17 -0
- data/exiftool.gemspec +30 -0
- data/lib/exiftool.rb +73 -0
- data/lib/exiftool/parser.rb +62 -0
- data/lib/exiftool/result.rb +32 -0
- data/lib/exiftool/version.rb +3 -0
- data/test/Canon 20D.jpg +0 -0
- data/test/Canon 20D.jpg.yaml +225 -0
- data/test/Droid X.jpg +0 -0
- data/test/Droid X.jpg.yaml +89 -0
- data/test/IMG_2452.jpg +0 -0
- data/test/IMG_2452.jpg.yaml +211 -0
- data/test/exiftoolr_test.rb +87 -0
- data/test/faces.jpg +0 -0
- data/test/faces.jpg.yaml +318 -0
- data/test/iPhone 4S.jpg +0 -0
- data/test/iPhone 4S.jpg.yaml +82 -0
- data/test/parser_test.rb +58 -0
- data/test/test_helper.rb +14 -0
- metadata +180 -0
data/test/Droid X.jpg
ADDED
Binary file
|
@@ -0,0 +1,89 @@
|
|
1
|
+
---
|
2
|
+
:source_file: /Users/mrm/Dropbox/code/exiftoolr/test/Droid X.jpg
|
3
|
+
:exif_tool_version: 9.31
|
4
|
+
:file_name: Droid X.jpg
|
5
|
+
:directory: /Users/mrm/Dropbox/code/exiftoolr/test
|
6
|
+
:file_size: 2023 kB
|
7
|
+
:file_modify_date: 2012-02-23 05:22:17.000000000 +00:00
|
8
|
+
:file_access_date: 2013-07-14 20:25:41.000000000 +00:00
|
9
|
+
:file_inode_change_date: 2013-02-16 19:21:58.000000000 +00:00
|
10
|
+
:file_permissions: rwxr-xr-x
|
11
|
+
:file_type: JPEG
|
12
|
+
:mime_type: image/jpeg
|
13
|
+
:exif_byte_order: Little-endian (Intel, II)
|
14
|
+
:make: Motorola
|
15
|
+
:model: DROIDX 6d460001fff80000015d7d330e01c011
|
16
|
+
:orientation: Rotate 90 CW
|
17
|
+
:x_resolution: 300
|
18
|
+
:y_resolution: 300
|
19
|
+
:resolution_unit: inches
|
20
|
+
:software: 2.2
|
21
|
+
:modify_date: 2010-12-08 01:15:37.000000000 +00:00
|
22
|
+
:y_cb_cr_positioning: Centered
|
23
|
+
:exposure_time: !ruby/object:Rational
|
24
|
+
denominator: 15
|
25
|
+
numerator: 1
|
26
|
+
:f_number: 2.8
|
27
|
+
:exposure_program: Program AE
|
28
|
+
:iso: 637
|
29
|
+
:exif_version: '0220'
|
30
|
+
:date_time_original: 2010-12-08 01:15:37.000000000 +00:00
|
31
|
+
:create_date: 2010-12-08 01:15:37.000000000 +00:00
|
32
|
+
:components_configuration: Cb, Y, Cr, Y
|
33
|
+
:compressed_bits_per_pixel: 4
|
34
|
+
:shutter_speed_value: !ruby/object:Rational
|
35
|
+
denominator: 15
|
36
|
+
numerator: 1
|
37
|
+
:aperture_value: 2.8
|
38
|
+
:brightness_value: -0.8203125
|
39
|
+
:exposure_compensation: 0
|
40
|
+
:max_aperture_value: 2.8
|
41
|
+
:subject_distance: 0 m
|
42
|
+
:metering_mode: Center-weighted average
|
43
|
+
:light_source: Standard Light A
|
44
|
+
:flash: Auto, Did not fire
|
45
|
+
:focal_length: 5.0 mm
|
46
|
+
:user_comment: ''
|
47
|
+
:flashpix_version: '0100'
|
48
|
+
:color_space: sRGB
|
49
|
+
:exif_image_width: 3264
|
50
|
+
:exif_image_height: 1840
|
51
|
+
:interop_index: R98 - DCF basic file (sRGB)
|
52
|
+
:interop_version: '0100'
|
53
|
+
:exposure_index: 637
|
54
|
+
:sensing_method: One-chip color area
|
55
|
+
:file_source: Digital Camera
|
56
|
+
:scene_type: Directly photographed
|
57
|
+
:custom_rendered: Custom
|
58
|
+
:exposure_mode: Auto
|
59
|
+
:white_balance: Auto
|
60
|
+
:digital_zoom_ratio: 0
|
61
|
+
:focal_length_in35mm_format: 38 mm
|
62
|
+
:scene_capture_type: Standard
|
63
|
+
:gain_control: High gain up
|
64
|
+
:contrast: Normal
|
65
|
+
:saturation: Normal
|
66
|
+
:sharpness: Normal
|
67
|
+
:subject_distance_range: Unknown
|
68
|
+
:image_unique_id: ''
|
69
|
+
:compression: JPEG (old-style)
|
70
|
+
:thumbnail_offset: 2150
|
71
|
+
:thumbnail_length: 32586
|
72
|
+
:image_width: 3264
|
73
|
+
:image_height: 1840
|
74
|
+
:encoding_process: Baseline DCT, Huffman coding
|
75
|
+
:bits_per_sample: 8
|
76
|
+
:color_components: 3
|
77
|
+
:y_cb_cr_sub_sampling: YCbCr4:2:0 (2 2)
|
78
|
+
:aperture: 2.8
|
79
|
+
:image_size: 3264x1840
|
80
|
+
:scale_factor35efl: 7.6
|
81
|
+
:shutter_speed: !ruby/object:Rational
|
82
|
+
denominator: 15
|
83
|
+
numerator: 1
|
84
|
+
:thumbnail_image: (Binary data 32586 bytes)
|
85
|
+
:circle_of_confusion: 0.004 mm
|
86
|
+
:fov: 50.7 deg
|
87
|
+
:focal_length35efl: '5.0 mm (35 mm equivalent: 38.0 mm)'
|
88
|
+
:hyperfocal_distance: 2.24 m
|
89
|
+
:light_value: 4.2
|
data/test/IMG_2452.jpg
ADDED
Binary file
|
@@ -0,0 +1,211 @@
|
|
1
|
+
---
|
2
|
+
:source_file: /Users/mrm/Dropbox/code/exiftoolr/test/IMG_2452.jpg
|
3
|
+
:exif_tool_version: 9.31
|
4
|
+
:file_name: IMG_2452.jpg
|
5
|
+
:directory: /Users/mrm/Dropbox/code/exiftoolr/test
|
6
|
+
:file_size: 2.8 MB
|
7
|
+
:file_modify_date: 2013-07-14 17:51:04.000000000 +00:00
|
8
|
+
:file_access_date: 2013-07-14 20:25:41.000000000 +00:00
|
9
|
+
:file_inode_change_date: 2013-07-14 17:51:04.000000000 +00:00
|
10
|
+
:file_permissions: rw-r--r--
|
11
|
+
:file_type: JPEG
|
12
|
+
:mime_type: image/jpeg
|
13
|
+
:exif_byte_order: Big-endian (Motorola, MM)
|
14
|
+
:image_description: ' '
|
15
|
+
:make: Canon
|
16
|
+
:model: Canon PowerShot SD980 IS
|
17
|
+
:orientation: Horizontal (normal)
|
18
|
+
:x_resolution: 72
|
19
|
+
:y_resolution: 72
|
20
|
+
:resolution_unit: inches
|
21
|
+
:software: QuickTime 7.6.6
|
22
|
+
:modify_date: 2011-07-06 20:41:11.000000000 +00:00
|
23
|
+
:host_computer: Mac OS X 10.6.8
|
24
|
+
:y_cb_cr_positioning: Co-sited
|
25
|
+
:exposure_time: !ruby/object:Rational
|
26
|
+
denominator: 800
|
27
|
+
numerator: 1
|
28
|
+
:f_number: 2.8
|
29
|
+
:iso: 160
|
30
|
+
:exif_version: '0220'
|
31
|
+
:date_time_original: 2011-07-06 09:46:45.000000000 +00:00
|
32
|
+
:create_date: 2011-07-06 09:46:45.000000000 +00:00
|
33
|
+
:components_configuration: Y, Cb, Cr, -
|
34
|
+
:compressed_bits_per_pixel: 3
|
35
|
+
:shutter_speed_value: !ruby/object:Rational
|
36
|
+
denominator: 807
|
37
|
+
numerator: 1
|
38
|
+
:aperture_value: 2.8
|
39
|
+
:max_aperture_value: 2.8
|
40
|
+
:flash: Auto, Did not fire
|
41
|
+
:focal_length: 4.3 mm
|
42
|
+
:warning: '[minor] Adjusted MakerNotes base by 50'
|
43
|
+
:macro_mode: Normal
|
44
|
+
:self_timer: 'Off'
|
45
|
+
:quality: Fine
|
46
|
+
:canon_flash_mode: Red-eye reduction (Auto)
|
47
|
+
:continuous_drive: Single
|
48
|
+
:focus_mode: Single
|
49
|
+
:record_mode: JPEG
|
50
|
+
:canon_image_size: Widescreen
|
51
|
+
:easy_mode: Full auto
|
52
|
+
:digital_zoom: None
|
53
|
+
:contrast: Normal
|
54
|
+
:saturation: Normal
|
55
|
+
:sharpness: 0
|
56
|
+
:camera_iso: Auto
|
57
|
+
:metering_mode: Evaluative
|
58
|
+
:focus_range: Auto
|
59
|
+
:af_point: Face Detect
|
60
|
+
:canon_exposure_mode: Easy
|
61
|
+
:lens_type: Unknown (-1)
|
62
|
+
:max_focal_length: 21.5 mm
|
63
|
+
:min_focal_length: 4.3 mm
|
64
|
+
:focal_units: 1000/mm
|
65
|
+
:max_aperture: 2.8
|
66
|
+
:min_aperture: 8
|
67
|
+
:flash_bits: (none)
|
68
|
+
:focus_continuous: Continuous
|
69
|
+
:ae_setting: Normal AE
|
70
|
+
:image_stabilization: 'On'
|
71
|
+
:zoom_source_width: 4000
|
72
|
+
:zoom_target_width: 4000
|
73
|
+
:spot_metering_mode: Center
|
74
|
+
:manual_flash_output: n/a
|
75
|
+
:focal_type: Zoom
|
76
|
+
:focal_plane_x_size: 6.35 mm
|
77
|
+
:focal_plane_y_size: 3.56 mm
|
78
|
+
:auto_iso: 148
|
79
|
+
:base_iso: 100
|
80
|
+
:measured_ev: 13.25
|
81
|
+
:target_aperture: 2.8
|
82
|
+
:target_exposure_time: !ruby/object:Rational
|
83
|
+
denominator: 807
|
84
|
+
numerator: 1
|
85
|
+
:exposure_compensation: 0
|
86
|
+
:white_balance: Auto
|
87
|
+
:slow_shutter: 'Off'
|
88
|
+
:sequence_number: 0
|
89
|
+
:optical_zoom_code: 0
|
90
|
+
:flash_guide_number: 0
|
91
|
+
:flash_exposure_comp: 0
|
92
|
+
:auto_exposure_bracketing: 'Off'
|
93
|
+
:aeb_bracket_value: 0
|
94
|
+
:control_mode: Camera Local Control
|
95
|
+
:focus_distance_upper: 65.53 m
|
96
|
+
:focus_distance_lower: 0 m
|
97
|
+
:bulb_duration: 0
|
98
|
+
:camera_type: Compact
|
99
|
+
:auto_rotate: Rotate 270 CW
|
100
|
+
:nd_filter: 'Off'
|
101
|
+
:self_timer2: 0
|
102
|
+
:flash_output: 0
|
103
|
+
:canon_image_type: IMG:PowerShot SD980 IS JPEG
|
104
|
+
:canon_firmware_version: Firmware Version 1.01
|
105
|
+
:file_number: 132-2452
|
106
|
+
:owner_name: ''
|
107
|
+
:rotation: 270
|
108
|
+
:camera_temperature: 29 C
|
109
|
+
:canon_model_id: PowerShot SD980 IS / Digital IXUS 200 IS / IXY Digital 930 IS
|
110
|
+
:af_area_mode: Multi-point AF or AI AF
|
111
|
+
:num_af_points: 9
|
112
|
+
:valid_af_points: 9
|
113
|
+
:canon_image_width: 4000
|
114
|
+
:canon_image_height: 2248
|
115
|
+
:af_image_width: 1000
|
116
|
+
:af_image_height: 100
|
117
|
+
:af_area_widths: 135 135 135 135 135 135 135 135 135
|
118
|
+
:af_area_heights: 18 18 18 18 18 18 18 18 18
|
119
|
+
:af_area_x_positions: -135 0 135 -135 0 135 -135 0 135
|
120
|
+
:af_area_y_positions: -18 -18 -18 0 0 0 18 18 18
|
121
|
+
:af_points_in_focus: 4
|
122
|
+
:primary_af_point: 4
|
123
|
+
:thumbnail_image_valid_area: 0 159 15 104
|
124
|
+
:date_stamp_mode: 'Off'
|
125
|
+
:my_color_mode: 'Off'
|
126
|
+
:firmware_revision: 1.01 rev 3.00
|
127
|
+
:categories: (none)
|
128
|
+
:intelligent_contrast: 'Off'
|
129
|
+
:image_unique_id: a3154f6d7ed923fe22415586cb3f8922
|
130
|
+
:vrd_offset: 0
|
131
|
+
:user_comment: ''
|
132
|
+
:flashpix_version: '0100'
|
133
|
+
:color_space: sRGB
|
134
|
+
:exif_image_width: 4000
|
135
|
+
:exif_image_height: 2248
|
136
|
+
:focal_plane_x_resolution: 16393.44262
|
137
|
+
:focal_plane_y_resolution: 12284.15301
|
138
|
+
:focal_plane_resolution_unit: inches
|
139
|
+
:sensing_method: One-chip color area
|
140
|
+
:file_source: Digital Camera
|
141
|
+
:custom_rendered: Normal
|
142
|
+
:exposure_mode: Auto
|
143
|
+
:digital_zoom_ratio: 1
|
144
|
+
:scene_capture_type: Standard
|
145
|
+
:compression: JPEG (old-style)
|
146
|
+
:thumbnail_offset: 3480
|
147
|
+
:thumbnail_length: 4627
|
148
|
+
:comment: |
|
149
|
+
AppleMark
|
150
|
+
:image_width: 2248
|
151
|
+
:image_height: 4000
|
152
|
+
:encoding_process: Baseline DCT, Huffman coding
|
153
|
+
:bits_per_sample: 8
|
154
|
+
:color_components: 3
|
155
|
+
:y_cb_cr_sub_sampling: YCbCr4:2:2 (2 1)
|
156
|
+
:profile_cmm_type: Lino
|
157
|
+
:profile_version: 2.1.0
|
158
|
+
:profile_class: Display Device Profile
|
159
|
+
:color_space_data: 'RGB '
|
160
|
+
:profile_connection_space: 'XYZ '
|
161
|
+
:profile_date_time: 1998-02-09 06:49:00.000000000 +00:00
|
162
|
+
:profile_file_signature: acsp
|
163
|
+
:primary_platform: Microsoft Corporation
|
164
|
+
:cmm_flags: Not Embedded, Independent
|
165
|
+
:device_manufacturer: 'IEC '
|
166
|
+
:device_model: sRGB
|
167
|
+
:device_attributes: Reflective, Glossy, Positive, Color
|
168
|
+
:rendering_intent: Perceptual
|
169
|
+
:connection_space_illuminant: 0.9642 1 0.82491
|
170
|
+
:profile_creator: 'HP '
|
171
|
+
:profile_id: 0
|
172
|
+
:profile_copyright: Copyright (c) 1998 Hewlett-Packard Company
|
173
|
+
:profile_description: sRGB IEC61966-2.1
|
174
|
+
:media_white_point: 0.95045 1 1.08905
|
175
|
+
:media_black_point: 0 0 0
|
176
|
+
:red_matrix_column: 0.43607 0.22249 0.01392
|
177
|
+
:green_matrix_column: 0.38515 0.71687 0.09708
|
178
|
+
:blue_matrix_column: 0.14307 0.06061 0.7141
|
179
|
+
:device_mfg_desc: IEC http://www.iec.ch
|
180
|
+
:device_model_desc: IEC 61966-2.1 Default RGB colour space - sRGB
|
181
|
+
:viewing_cond_desc: Reference Viewing Condition in IEC61966-2.1
|
182
|
+
:viewing_cond_illuminant: 19.6445 20.3718 16.8089
|
183
|
+
:viewing_cond_surround: 3.92889 4.07439 3.36179
|
184
|
+
:viewing_cond_illuminant_type: D50
|
185
|
+
:luminance: 76.03647 80 87.12462
|
186
|
+
:measurement_observer: CIE 1931
|
187
|
+
:measurement_backing: 0 0 0
|
188
|
+
:measurement_geometry: Unknown (0)
|
189
|
+
:measurement_flare: 0.999%
|
190
|
+
:measurement_illuminant: D65
|
191
|
+
:technology: Cathode Ray Tube Display
|
192
|
+
:red_trc: (Binary data 2060 bytes)
|
193
|
+
:green_trc: (Binary data 2060 bytes)
|
194
|
+
:blue_trc: (Binary data 2060 bytes)
|
195
|
+
:aperture: 2.8
|
196
|
+
:drive_mode: Single-frame Shooting
|
197
|
+
:image_size: 2248x4000
|
198
|
+
:lens: 4.3 - 21.5 mm
|
199
|
+
:lens_id: Unknown 4-21mm
|
200
|
+
:scale_factor35efl: 5.6
|
201
|
+
:shooting_mode: Full auto
|
202
|
+
:shutter_speed: !ruby/object:Rational
|
203
|
+
denominator: 800
|
204
|
+
numerator: 1
|
205
|
+
:thumbnail_image: (Binary data 4627 bytes)
|
206
|
+
:circle_of_confusion: 0.005 mm
|
207
|
+
:fov: 73.7 deg
|
208
|
+
:focal_length35efl: '4.3 mm (35 mm equivalent: 24.0 mm)'
|
209
|
+
:hyperfocal_distance: 1.23 m
|
210
|
+
:lens35efl: '4.3 - 21.5 mm (35 mm equivalent: 24.0 - 120.1 mm)'
|
211
|
+
:light_value: 11.9
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe Exiftool do
|
4
|
+
|
5
|
+
DUMP_RESULTS = false
|
6
|
+
|
7
|
+
it 'raises NoSuchFile for missing files' do
|
8
|
+
proc { Exiftool.new('no/such/file') }.must_raise Exiftool::NoSuchFile
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'raises NotAFile for directories' do
|
12
|
+
proc { Exiftool.new('lib') }.must_raise Exiftool::NotAFile
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'no-ops with no files' do
|
16
|
+
e = Exiftool.new([])
|
17
|
+
e.errors?.must_be_false
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'has errors with files without EXIF headers' do
|
21
|
+
e = Exiftool.new('Gemfile')
|
22
|
+
e.errors?.must_be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'single-get' do
|
26
|
+
it 'responds with known correct responses' do
|
27
|
+
Dir['test/*.jpg'].each do |filename|
|
28
|
+
e = Exiftool.new(filename)
|
29
|
+
validate_result(e, filename)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'multi-get' do
|
35
|
+
def test_multi_matches
|
36
|
+
filenames = Dir['**/*.jpg'].to_a
|
37
|
+
e = Exiftool.new(filenames)
|
38
|
+
filenames.each { |f| validate_result(e.result_for(f), f) }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def validate_result(result, filename)
|
43
|
+
yaml_file = "#{filename}.yaml"
|
44
|
+
exif = result.to_hash
|
45
|
+
File.open(yaml_file, 'w') { |out| YAML.dump(exif, out) } if DUMP_RESULTS
|
46
|
+
e = File.open(yaml_file) { |f| YAML::load(f) }
|
47
|
+
exif.keys.each do |k|
|
48
|
+
next if ignorable_key?(k)
|
49
|
+
expected = e[k]
|
50
|
+
next if expected.nil? # older version of exiftool
|
51
|
+
actual = exif[k]
|
52
|
+
if expected.is_a?(String)
|
53
|
+
expected.downcase!
|
54
|
+
actual.downcase!
|
55
|
+
end
|
56
|
+
puts "Key '#{k}' was incorrect for #{filename}" if expected != actual
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# These are expected to be different on travis, due to different paths, filesystems, or
|
61
|
+
# exiftool version differences.
|
62
|
+
# fov and hyperfocal_distance, for example, are different between v8 and v9.
|
63
|
+
IGNORABLE_KEYS = [
|
64
|
+
:circle_of_confusion,
|
65
|
+
:create_date,
|
66
|
+
:date_time_original,
|
67
|
+
:directory,
|
68
|
+
:exif_tool_version,
|
69
|
+
:file_access_date,
|
70
|
+
:file_modify_date,
|
71
|
+
:file_permissions,
|
72
|
+
:fov,
|
73
|
+
:hyperfocal_distance,
|
74
|
+
:modify_date,
|
75
|
+
:nd_filter,
|
76
|
+
:source_file
|
77
|
+
]
|
78
|
+
|
79
|
+
IGNORABLE_PATTERNS = [
|
80
|
+
/.*\-ml-\w\w-\w\w$/, # < translatable
|
81
|
+
/35efl$/ # < 35mm Effective focal length, whose calculation was changed between v8 and v9.
|
82
|
+
]
|
83
|
+
|
84
|
+
def ignorable_key?(key)
|
85
|
+
IGNORABLE_KEYS.include?(key) || IGNORABLE_PATTERNS.any? { |ea| key.to_s =~ ea }
|
86
|
+
end
|
87
|
+
end
|
data/test/faces.jpg
ADDED
Binary file
|
data/test/faces.jpg.yaml
ADDED
@@ -0,0 +1,318 @@
|
|
1
|
+
---
|
2
|
+
:source_file: /Users/mrm/Dropbox/code/exiftoolr/test/faces.jpg
|
3
|
+
:exif_tool_version: 9.31
|
4
|
+
:file_name: faces.jpg
|
5
|
+
:directory: /Users/mrm/Dropbox/code/exiftoolr/test
|
6
|
+
:file_size: 3.8 MB
|
7
|
+
:file_modify_date: 2013-07-14 06:00:41.000000000 +00:00
|
8
|
+
:file_access_date: 2013-07-14 20:25:41.000000000 +00:00
|
9
|
+
:file_inode_change_date: 2013-07-14 06:01:42.000000000 +00:00
|
10
|
+
:file_permissions: rw-r--r--
|
11
|
+
:file_type: JPEG
|
12
|
+
:mime_type: image/jpeg
|
13
|
+
:exif_byte_order: Little-endian (Intel, II)
|
14
|
+
:make: Canon
|
15
|
+
:model: Canon EOS 20D
|
16
|
+
:orientation: Horizontal (normal)
|
17
|
+
:x_resolution: 72
|
18
|
+
:y_resolution: 72
|
19
|
+
:resolution_unit: inches
|
20
|
+
:software: Picasa
|
21
|
+
:modify_date: 2012-02-15 22:58:07.000000000 +00:00
|
22
|
+
:y_cb_cr_positioning: Co-sited
|
23
|
+
:exposure_time: !ruby/object:Rational
|
24
|
+
denominator: 4000
|
25
|
+
numerator: 1
|
26
|
+
:f_number: 4.0
|
27
|
+
:exposure_program: Not Defined
|
28
|
+
:iso: 400
|
29
|
+
:exif_version: '0221'
|
30
|
+
:date_time_original: 2005-11-26 14:20:34.000000000 +00:00
|
31
|
+
:create_date: 2005-11-26 14:20:34.000000000 +00:00
|
32
|
+
:components_configuration: Y, Cb, Cr, -
|
33
|
+
:shutter_speed_value: !ruby/object:Rational
|
34
|
+
denominator: 4000
|
35
|
+
numerator: 1
|
36
|
+
:aperture_value: 4.0
|
37
|
+
:flash: Off, Did not fire
|
38
|
+
:focal_length: 17.0 mm
|
39
|
+
:macro_mode: Normal
|
40
|
+
:self_timer: 'Off'
|
41
|
+
:quality: Fine
|
42
|
+
:canon_flash_mode: 'Off'
|
43
|
+
:continuous_drive: Single
|
44
|
+
:focus_mode: One-shot AF
|
45
|
+
:record_mode: JPEG
|
46
|
+
:canon_image_size: Large
|
47
|
+
:easy_mode: Manual
|
48
|
+
:digital_zoom: None
|
49
|
+
:contrast: Normal
|
50
|
+
:saturation: Normal
|
51
|
+
:sharpness: 0
|
52
|
+
:metering_mode: Center-weighted average
|
53
|
+
:focus_range: Not Known
|
54
|
+
:canon_exposure_mode: Depth-of-field AE
|
55
|
+
:lens_type: Unknown (-1)
|
56
|
+
:max_focal_length: 40 mm
|
57
|
+
:min_focal_length: 17 mm
|
58
|
+
:focal_units: 1/mm
|
59
|
+
:flash_activity: 0
|
60
|
+
:flash_bits: (none)
|
61
|
+
:focus_continuous: Single
|
62
|
+
:zoom_source_width: 0
|
63
|
+
:zoom_target_width: 0
|
64
|
+
:photo_effect: 'Off'
|
65
|
+
:manual_flash_output: n/a
|
66
|
+
:focal_type: Zoom
|
67
|
+
:focal_plane_x_size: 23.04 mm
|
68
|
+
:focal_plane_y_size: 15.37 mm
|
69
|
+
:auto_iso: 100
|
70
|
+
:base_iso: 400
|
71
|
+
:measured_ev: 14.12
|
72
|
+
:target_aperture: 4
|
73
|
+
:target_exposure_time: !ruby/object:Rational
|
74
|
+
denominator: 4008
|
75
|
+
numerator: 1
|
76
|
+
:exposure_compensation: 0
|
77
|
+
:white_balance: Auto
|
78
|
+
:slow_shutter: None
|
79
|
+
:sequence_number: 0
|
80
|
+
:optical_zoom_code: n/a
|
81
|
+
:flash_guide_number: 0
|
82
|
+
:flash_exposure_comp: +2/3
|
83
|
+
:auto_exposure_bracketing: 'Off'
|
84
|
+
:aeb_bracket_value: 0
|
85
|
+
:control_mode: Camera Local Control
|
86
|
+
:measured_ev2: 14.125
|
87
|
+
:bulb_duration: 0
|
88
|
+
:camera_type: EOS Mid-range
|
89
|
+
:auto_rotate: None
|
90
|
+
:nd_filter: n/a
|
91
|
+
:self_timer2: 0
|
92
|
+
:canon_image_type: Canon EOS 20D
|
93
|
+
:canon_firmware_version: Firmware 2.0.3
|
94
|
+
:owner_name: unknown
|
95
|
+
:serial_number: 0720413239
|
96
|
+
:set_function_when_shooting: Change quality
|
97
|
+
:long_exposure_noise_reduction: 'On'
|
98
|
+
:flash_sync_speed_av: Auto
|
99
|
+
:shutter-ae_lock: AF/AE lock
|
100
|
+
:af_assist_beam: Emits
|
101
|
+
:exposure_level_increments: 1/3 Stop
|
102
|
+
:flash_firing: Fires
|
103
|
+
:iso_expansion: 'Off'
|
104
|
+
:aeb_sequence_auto_cancel: 0,-,+/Enabled
|
105
|
+
:superimposed_display: 'On'
|
106
|
+
:menu_button_display_position: Previous (top if power off)
|
107
|
+
:mirror_lockup: Disable
|
108
|
+
:af_point_selection_method: Normal
|
109
|
+
:ettlii: Evaluative
|
110
|
+
:shutter_curtain_sync: 1st-curtain sync
|
111
|
+
:safety_shift_in_av_or_tv: Enable
|
112
|
+
:lens_af_stop_button: ONE SHOT <-> AI SERVO
|
113
|
+
:add_original_decision_data: 'On'
|
114
|
+
:canon_model_id: EOS 20D
|
115
|
+
:num_af_points: 9
|
116
|
+
:valid_af_points: 9
|
117
|
+
:canon_image_width: 3504
|
118
|
+
:canon_image_height: 2336
|
119
|
+
:af_image_width: 3504
|
120
|
+
:af_image_height: 2336
|
121
|
+
:af_area_width: 78
|
122
|
+
:af_area_height: 78
|
123
|
+
:af_area_x_positions: 8 -555 571 -931 8 947 -555 571 8
|
124
|
+
:af_area_y_positions: 504 270 270 4 4 4 -262 -262 -496
|
125
|
+
:af_points_in_focus: 0,1,2,3,4,5,6,7,8
|
126
|
+
:thumbnail_image_valid_area: 0 159 7 112
|
127
|
+
:serial_number_format: Format 2
|
128
|
+
:original_decision_data_offset: 3968887
|
129
|
+
:file_number: 326-2647
|
130
|
+
:bracket_mode: 'Off'
|
131
|
+
:bracket_value: 0
|
132
|
+
:bracket_shot_number: 0
|
133
|
+
:long_exposure_noise_reduction2: 'Off'
|
134
|
+
:wb_bracket_mode: 'Off'
|
135
|
+
:wb_bracket_value_ab: 0
|
136
|
+
:wb_bracket_value_gm: 0
|
137
|
+
:filter_effect: None
|
138
|
+
:toning_effect: None
|
139
|
+
:tone_curve: Standard
|
140
|
+
:sharpness_frequency: n/a
|
141
|
+
:sensor_red_level: 0
|
142
|
+
:sensor_blue_level: 0
|
143
|
+
:white_balance_red: 0
|
144
|
+
:white_balance_blue: 0
|
145
|
+
:color_temperature: 4300
|
146
|
+
:picture_style: None
|
147
|
+
:digital_gain: 0
|
148
|
+
:wb_shift_ab: 0
|
149
|
+
:wb_shift_gm: 0
|
150
|
+
:measured_rggb: 641 1024 1024 660
|
151
|
+
:vrd_offset: 0
|
152
|
+
:sensor_width: 3596
|
153
|
+
:sensor_height: 2360
|
154
|
+
:sensor_left_border: 84
|
155
|
+
:sensor_top_border: 19
|
156
|
+
:sensor_right_border: 3587
|
157
|
+
:sensor_bottom_border: 2354
|
158
|
+
:black_mask_left_border: 0
|
159
|
+
:black_mask_top_border: 0
|
160
|
+
:black_mask_right_border: 0
|
161
|
+
:black_mask_bottom_border: 0
|
162
|
+
:wb_rggb_levels_as_shot: 1822 1015 1015 1709
|
163
|
+
:color_temp_as_shot: 4599
|
164
|
+
:wb_rggb_levels_auto: 1822 1023 1023 1709
|
165
|
+
:color_temp_auto: 4599
|
166
|
+
:wb_rggb_levels_daylight: 1933 1023 1023 1607
|
167
|
+
:color_temp_daylight: 5200
|
168
|
+
:wb_rggb_levels_shade: 2215 1023 1023 1341
|
169
|
+
:color_temp_shade: 7000
|
170
|
+
:wb_rggb_levels_cloudy: 2087 1023 1023 1459
|
171
|
+
:color_temp_cloudy: 6000
|
172
|
+
:wb_rggb_levels_tungsten: 1382 1023 1023 2574
|
173
|
+
:color_temp_tungsten: 3203
|
174
|
+
:wb_rggb_levels_fluorescent: 1743 1023 1023 2205
|
175
|
+
:color_temp_fluorescent: 3961
|
176
|
+
:wb_rggb_levels_flash: 2112 1023 1023 1414
|
177
|
+
:color_temp_flash: 6303
|
178
|
+
:wb_rggb_levels_custom1: 1096 1023 1023 2793
|
179
|
+
:color_temp_custom1: 2694
|
180
|
+
:wb_rggb_levels_custom2: 1734 1023 1023 1901
|
181
|
+
:color_temp_custom2: 4301
|
182
|
+
:color_tone: Normal
|
183
|
+
:user_comment: ''
|
184
|
+
:flashpix_version: '0100'
|
185
|
+
:color_space: sRGB
|
186
|
+
:exif_image_width: 3504
|
187
|
+
:exif_image_height: 2336
|
188
|
+
:interop_index: R98 - DCF basic file (sRGB)
|
189
|
+
:interop_version: '0100'
|
190
|
+
:focal_plane_x_resolution: 3959.322034
|
191
|
+
:focal_plane_y_resolution: 3959.322034
|
192
|
+
:focal_plane_resolution_unit: inches
|
193
|
+
:custom_rendered: Normal
|
194
|
+
:exposure_mode: Auto
|
195
|
+
:scene_capture_type: Standard
|
196
|
+
:compression: JPEG (old-style)
|
197
|
+
:thumbnail_offset: 4036
|
198
|
+
:thumbnail_length: 12170
|
199
|
+
:xmp_toolkit: XMP Core 5.1.2
|
200
|
+
:region_applied_to_dimensions_w: 3504
|
201
|
+
:region_applied_to_dimensions_h: 2336
|
202
|
+
:region_applied_to_dimensions_unit: pixel
|
203
|
+
:region_name:
|
204
|
+
- Matthew McEachen
|
205
|
+
- Karen McEachen
|
206
|
+
- Ruth McEachen
|
207
|
+
- James McEachen
|
208
|
+
- Jamie McEachen
|
209
|
+
:region_type:
|
210
|
+
- Face
|
211
|
+
- Face
|
212
|
+
- Face
|
213
|
+
- Face
|
214
|
+
- Face
|
215
|
+
:region_area_x:
|
216
|
+
- 0.549658
|
217
|
+
- 0.858162
|
218
|
+
- 0.730736
|
219
|
+
- 0.453196
|
220
|
+
- 0.118579
|
221
|
+
:region_area_y:
|
222
|
+
- 0.248716
|
223
|
+
- 0.486301
|
224
|
+
- 0.243365
|
225
|
+
- 0.360873
|
226
|
+
- 0.466182
|
227
|
+
:region_area_w:
|
228
|
+
- 0.0667808
|
229
|
+
- 0.103881
|
230
|
+
- 0.0687785
|
231
|
+
- 0.0753424
|
232
|
+
- 0.11387
|
233
|
+
:region_area_h:
|
234
|
+
- 0.119007
|
235
|
+
- 0.1875
|
236
|
+
- 0.12286
|
237
|
+
- 0.101884
|
238
|
+
- 0.189212
|
239
|
+
:region_area_unit:
|
240
|
+
- normalized
|
241
|
+
- normalized
|
242
|
+
- normalized
|
243
|
+
- normalized
|
244
|
+
- normalized
|
245
|
+
:profile_cmm_type: appl
|
246
|
+
:profile_version: 2.2.0
|
247
|
+
:profile_class: Input Device Profile
|
248
|
+
:color_space_data: 'RGB '
|
249
|
+
:profile_connection_space: 'XYZ '
|
250
|
+
:profile_date_time: 2003-07-01 00:00:00.000000000 +00:00
|
251
|
+
:profile_file_signature: acsp
|
252
|
+
:primary_platform: Apple Computer Inc.
|
253
|
+
:cmm_flags: Not Embedded, Independent
|
254
|
+
:device_manufacturer: appl
|
255
|
+
:device_model: ''
|
256
|
+
:device_attributes: Reflective, Glossy, Positive, Color
|
257
|
+
:rendering_intent: Perceptual
|
258
|
+
:connection_space_illuminant: 0.9642 1 0.82491
|
259
|
+
:profile_creator: appl
|
260
|
+
:profile_id: 0
|
261
|
+
:red_matrix_column: 0.45427 0.24263 0.01482
|
262
|
+
:green_matrix_column: 0.35332 0.67441 0.09042
|
263
|
+
:blue_matrix_column: 0.15662 0.08336 0.71953
|
264
|
+
:media_white_point: 0.95047 1 1.0891
|
265
|
+
:chromatic_adaptation: 1.04788 0.02292 -0.0502 0.02957 0.99049 -0.01706 -0.00923 0.01508
|
266
|
+
0.75165
|
267
|
+
:red_trc: (Binary data 14 bytes)
|
268
|
+
:green_trc: (Binary data 14 bytes)
|
269
|
+
:blue_trc: (Binary data 14 bytes)
|
270
|
+
:profile_description: Camera RGB Profile
|
271
|
+
:profile_copyright: Copyright 2003 Apple Computer Inc., all rights reserved.
|
272
|
+
:profile_description_ml: Camera RGB Profile
|
273
|
+
:profile_description_ml-es-es: Perfil RGB para Cámara
|
274
|
+
:profile_description_ml-da-dk: RGB-beskrivelse til Kamera
|
275
|
+
:profile_description_ml-de-de: RGB-Profil für Kameras
|
276
|
+
:profile_description_ml-fi-fi: Kameran RGB-profiili
|
277
|
+
:profile_description_ml-fr-fu: Profil RVB de l’appareil-photo
|
278
|
+
:profile_description_ml-it-it: Profilo RGB Fotocamera
|
279
|
+
:profile_description_ml-nl-nl: RGB-profiel Camera
|
280
|
+
:profile_description_ml-no-no: RGB-kameraprofil
|
281
|
+
:profile_description_ml-pt-br: Perfil RGB de Câmera
|
282
|
+
:profile_description_ml-sv-se: RGB-profil för Kamera
|
283
|
+
:profile_description_ml-ja-jp: カメラ RGB プロファイル
|
284
|
+
:profile_description_ml-ko-kr: 카메라 RGB 프로파일
|
285
|
+
:profile_description_ml-zh-tw: 數位相機 RGB 色彩描述
|
286
|
+
:profile_description_ml-zh-cn: 相机 RGB 描述文件
|
287
|
+
:current_iptc_digest: b443520a10119da99c2550175e6d0efb
|
288
|
+
:envelope_record_version: 4
|
289
|
+
:coded_character_set: UTF8
|
290
|
+
:application_record_version: 4
|
291
|
+
:iptc_digest: b443520a10119da99c2550175e6d0efb
|
292
|
+
:image_width: 3504
|
293
|
+
:image_height: 2336
|
294
|
+
:encoding_process: Baseline DCT, Huffman coding
|
295
|
+
:bits_per_sample: 8
|
296
|
+
:color_components: 3
|
297
|
+
:y_cb_cr_sub_sampling: YCbCr4:2:2 (2 1)
|
298
|
+
:aperture: 4.0
|
299
|
+
:drive_mode: Single-frame Shooting
|
300
|
+
:image_size: 3504x2336
|
301
|
+
:lens: 17.0 - 40.0 mm
|
302
|
+
:lens_id: Unknown 17-40mm
|
303
|
+
:warning: Invalid original decision data
|
304
|
+
:scale_factor35efl: 1.6
|
305
|
+
:shooting_mode: Depth-of-field AE
|
306
|
+
:shutter_speed: !ruby/object:Rational
|
307
|
+
denominator: 4000
|
308
|
+
numerator: 1
|
309
|
+
:thumbnail_image: (Binary data 12170 bytes)
|
310
|
+
:wb_rggb_levels: 1822 1015 1015 1709
|
311
|
+
:blue_balance: 1.683744
|
312
|
+
:circle_of_confusion: 0.019 mm
|
313
|
+
:fov: 66.9 deg
|
314
|
+
:focal_length35efl: '17.0 mm (35 mm equivalent: 27.2 mm)'
|
315
|
+
:hyperfocal_distance: 3.85 m
|
316
|
+
:lens35efl: '17.0 - 40.0 mm (35 mm equivalent: 27.2 - 64.1 mm)'
|
317
|
+
:light_value: 14.0
|
318
|
+
:red_balance: 1.795074
|