exiftool 0.2.0 → 0.3.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 +14 -6
- data/lib/exiftool.rb +10 -2
- data/lib/exiftool/version.rb +1 -1
- metadata +20 -52
- data/.gitignore +0 -4
- data/.travis.yml +0 -9
- data/Gemfile +0 -4
- data/README.md +0 -113
- data/Rakefile +0 -17
- data/exiftool.gemspec +0 -30
- data/test/Canon 20D.jpg +0 -0
- data/test/Canon 20D.jpg.yaml +0 -225
- data/test/Droid X.jpg +0 -0
- data/test/Droid X.jpg.yaml +0 -89
- data/test/IMG_2452.jpg +0 -0
- data/test/IMG_2452.jpg.yaml +0 -211
- data/test/exiftoolr_test.rb +0 -87
- data/test/faces.jpg +0 -0
- data/test/faces.jpg.yaml +0 -318
- data/test/iPhone 4S.jpg +0 -0
- data/test/iPhone 4S.jpg.yaml +0 -82
- data/test/parser_test.rb +0 -58
- data/test/test_helper.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZWJmMDM1Yzg3MGRjNzFmZWJiOWQ1NTY1ODc5YTJkNWRiMTBkNGVlMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OWM0NGMxMGI3ZjIyNjM4NzZlNjg3ZjcwNTk3OWYyNGQyZDQ0N2U0Nw==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OGE5MzYxODNhNzA1OWViZDRjNTQ1MGEyNmNjNTUxNzA0ZDNiODQ3N2YxY2Jm
|
10
|
+
YTNiN2VjYTdlMjE5YzBlMjEzNzlhNjczZTBlNjdiNDY4MWJmZWVlZTJhNWJh
|
11
|
+
MjQyN2FjMWFhNjgxYmM0MGZiZjU2YWE1YWFmZDRhZTkzN2NjMDA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
Yzk1N2Y2ZGIyOWRlYzM1YTg4NzAyZDhjMWZiNmVjMWM1ZDU5MGRlODliYmNk
|
14
|
+
MmUyNTUyZjEwM2ZlZWFlMzUwMzc5ZjcxZTQ1NjgxYzQ2OGJmMDg3NTkyMzlj
|
15
|
+
MDNjN2I3NTQwZDBiNmNhZjJlMzgyYmYzZmRhOTM4NDZkZDk1MTA=
|
data/lib/exiftool.rb
CHANGED
@@ -7,12 +7,20 @@ class Exiftool
|
|
7
7
|
class NotAFile < StandardError ; end
|
8
8
|
class ExiftoolNotInstalled < StandardError ; end
|
9
9
|
|
10
|
+
def self.command=(path_to_exiftool)
|
11
|
+
@command = path_to_exiftool
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.command
|
15
|
+
@command || 'exiftool'
|
16
|
+
end
|
17
|
+
|
10
18
|
def self.exiftool_installed?
|
11
19
|
exiftool_version > 0
|
12
20
|
end
|
13
21
|
|
14
22
|
def self.exiftool_version
|
15
|
-
|
23
|
+
@exiftool_version ||= `#{command} -ver 2> /dev/null`.to_f
|
16
24
|
end
|
17
25
|
|
18
26
|
def self.expand_path(filename)
|
@@ -30,7 +38,7 @@ class Exiftool
|
|
30
38
|
end.join(" ")
|
31
39
|
# I'd like to use -dateformat, but it doesn't support timezone offsets properly,
|
32
40
|
# nor sub-second timestamps.
|
33
|
-
cmd = "
|
41
|
+
cmd = "#{self.class.command} #{exiftool_opts} -j -coordFormat \"%.8f\" #{escaped_filenames} 2> /dev/null"
|
34
42
|
json = `#{cmd}`
|
35
43
|
raise ExiftoolNotInstalled if json == ""
|
36
44
|
JSON.parse(json).each do |raw|
|
data/lib/exiftool/version.rb
CHANGED
metadata
CHANGED
@@ -1,111 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - '>='
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - '>='
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - '>='
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - '>='
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - '>='
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - '>='
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: yard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - '>='
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - '>='
|
66
|
+
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - '>='
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - '>='
|
80
|
+
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest-great_expectations
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - '>='
|
87
|
+
- - ! '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - '>='
|
94
|
+
- - ! '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: minitest-reporters
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - '>='
|
101
|
+
- - ! '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - '>='
|
108
|
+
- - ! '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
description: Multiget ExifTool wrapper for ruby
|
@@ -115,29 +115,10 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
-
- .gitignore
|
119
|
-
- .travis.yml
|
120
|
-
- Gemfile
|
121
|
-
- README.md
|
122
|
-
- Rakefile
|
123
|
-
- exiftool.gemspec
|
124
118
|
- lib/exiftool.rb
|
125
119
|
- lib/exiftool/parser.rb
|
126
120
|
- lib/exiftool/result.rb
|
127
121
|
- lib/exiftool/version.rb
|
128
|
-
- test/Canon 20D.jpg
|
129
|
-
- test/Canon 20D.jpg.yaml
|
130
|
-
- test/Droid X.jpg
|
131
|
-
- test/Droid X.jpg.yaml
|
132
|
-
- test/IMG_2452.jpg
|
133
|
-
- test/IMG_2452.jpg.yaml
|
134
|
-
- test/exiftoolr_test.rb
|
135
|
-
- test/faces.jpg
|
136
|
-
- test/faces.jpg.yaml
|
137
|
-
- test/iPhone 4S.jpg
|
138
|
-
- test/iPhone 4S.jpg.yaml
|
139
|
-
- test/parser_test.rb
|
140
|
-
- test/test_helper.rb
|
141
122
|
homepage: https://github.com/mceachen/exiftoolr
|
142
123
|
licenses:
|
143
124
|
- MIT
|
@@ -148,33 +129,20 @@ require_paths:
|
|
148
129
|
- lib
|
149
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
131
|
requirements:
|
151
|
-
- - '>='
|
132
|
+
- - ! '>='
|
152
133
|
- !ruby/object:Gem::Version
|
153
134
|
version: '0'
|
154
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
136
|
requirements:
|
156
|
-
- - '>='
|
137
|
+
- - ! '>='
|
157
138
|
- !ruby/object:Gem::Version
|
158
139
|
version: '0'
|
159
140
|
requirements:
|
160
141
|
- ExifTool (see http://www.sno.phy.queensu.ca/~phil/exiftool/)
|
161
142
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.0.
|
143
|
+
rubygems_version: 2.0.3
|
163
144
|
signing_key:
|
164
145
|
specification_version: 4
|
165
146
|
summary: Multiget ExifTool wrapper for ruby
|
166
|
-
test_files:
|
167
|
-
- test/Canon 20D.jpg
|
168
|
-
- test/Canon 20D.jpg.yaml
|
169
|
-
- test/Droid X.jpg
|
170
|
-
- test/Droid X.jpg.yaml
|
171
|
-
- test/IMG_2452.jpg
|
172
|
-
- test/IMG_2452.jpg.yaml
|
173
|
-
- test/exiftoolr_test.rb
|
174
|
-
- test/faces.jpg
|
175
|
-
- test/faces.jpg.yaml
|
176
|
-
- test/iPhone 4S.jpg
|
177
|
-
- test/iPhone 4S.jpg.yaml
|
178
|
-
- test/parser_test.rb
|
179
|
-
- test/test_helper.rb
|
147
|
+
test_files: []
|
180
148
|
has_rdoc:
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/README.md
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
# Ruby wrapper for ExifTool
|
2
|
-
|
3
|
-
[](http://travis-ci.org/mceachen/exiftool)
|
4
|
-
[](http://rubygems.org/gems/exiftool)
|
5
|
-
[](https://codeclimate.com/github/mceachen/exiftool)
|
6
|
-
|
7
|
-
This gem is the simplest thing that could possibly work that
|
8
|
-
reads the output of [exiftool](http://www.sno.phy.queensu.ca/~phil/exiftool)
|
9
|
-
and renders it into a ruby hash, with correctly typed values and symbolized keys.
|
10
|
-
|
11
|
-
Rubies 1.9 and later are supported.
|
12
|
-
|
13
|
-
## Features
|
14
|
-
|
15
|
-
* GPS latitude and longitude values are parsed as signed floats,
|
16
|
-
where north and east are positive, and west and south are negative.
|
17
|
-
* Values like shutter speed and exposure time are rendered as Rationals,
|
18
|
-
which lets the caller show them as fractions (1/250) or as comparable numeric instances.
|
19
|
-
* String values like "interop" and "serial number" are kept as strings
|
20
|
-
(which preserves zero prefixes)
|
21
|
-
* Timestamps are attempted to be interpreted with correct timezones and sub-second resolution, if
|
22
|
-
the header contains that data.
|
23
|
-
Please note that EXIF headers don't always include a timezone offset, so we just adopt the system
|
24
|
-
timezone, which may, of course, be wrong.
|
25
|
-
* No method_missing madness
|
26
|
-
|
27
|
-
## Usage
|
28
|
-
|
29
|
-
```ruby
|
30
|
-
require 'Exiftool'
|
31
|
-
e = Exiftool.new("path/to/iPhone 4S.jpg")
|
32
|
-
e.to_hash
|
33
|
-
# => {:make => "Apple", :gps_longitude => -122.47566667, …
|
34
|
-
e.to_display_hash
|
35
|
-
# => {"Make" => "Apple", "GPS Longitude" => -122.47566667, …
|
36
|
-
```
|
37
|
-
|
38
|
-
### Multiple file support
|
39
|
-
|
40
|
-
This gem supports Exiftool's multiget, which lets you fetch metadata for many files at once.
|
41
|
-
|
42
|
-
This can be dramatically more efficient (like, 60x faster) than spinning up the ```exiftool```
|
43
|
-
process for each file.
|
44
|
-
|
45
|
-
Supply an array to the Exiftool initializer, then use ```.result_for```:
|
46
|
-
|
47
|
-
```ruby
|
48
|
-
require 'Exiftool'
|
49
|
-
e = Exiftool.new(Dir["**/*.jpg"])
|
50
|
-
result = e.result_for("path/to/iPhone 4S.jpg")
|
51
|
-
result.to_hash
|
52
|
-
# => {:make => "Apple", :gps_longitude => -122.47566667, …
|
53
|
-
result[:gps_longitude]
|
54
|
-
# => -122.47566667
|
55
|
-
|
56
|
-
e.files_with_results
|
57
|
-
# => ["path/to/iPhone 4S.jpg", "path/to/Droid X.jpg", …
|
58
|
-
```
|
59
|
-
|
60
|
-
### When things go wrong
|
61
|
-
|
62
|
-
* ```Exiftool::NoSuchFile``` is raised if the provided filename doesn't exist.
|
63
|
-
* ```Exiftool::ExiftoolNotInstalled``` is raised if ```exiftool``` isn't in your ```PATH```.
|
64
|
-
* If ExifTool has a problem reading EXIF data, no exception is raised, but ```#errors?``` will return true:
|
65
|
-
|
66
|
-
```ruby
|
67
|
-
Exiftool.new("Gemfile").errors?
|
68
|
-
#=> true
|
69
|
-
```
|
70
|
-
|
71
|
-
## Installation
|
72
|
-
|
73
|
-
First [install ExifTool](http://www.sno.phy.queensu.ca/~phil/exiftool/install.html).
|
74
|
-
|
75
|
-
Then, add this your Gemfile:
|
76
|
-
|
77
|
-
gem 'exiftool'
|
78
|
-
|
79
|
-
and then run ```bundle```.
|
80
|
-
|
81
|
-
## Change history
|
82
|
-
|
83
|
-
### 0.2.0
|
84
|
-
|
85
|
-
* Renamed from exiftoolr to exiftool
|
86
|
-
|
87
|
-
### 0.1.0
|
88
|
-
|
89
|
-
* Better timestamp parsing—now both sub-second and timezone offsets are handled correctly
|
90
|
-
* Switched to minitest-spec
|
91
|
-
* Ruby 1.8.7 is no longer supported, hence the minor version uptick.
|
92
|
-
|
93
|
-
### 0.0.9
|
94
|
-
|
95
|
-
* Explicitly added MIT licensing to the gemspec.
|
96
|
-
|
97
|
-
### 0.0.8
|
98
|
-
|
99
|
-
* Extracted methods in parsing to make the code complexity lower. FOUR DOT OH GPA
|
100
|
-
|
101
|
-
### 0.0.7
|
102
|
-
|
103
|
-
* Added warning values for EXIF headers that are corrupt
|
104
|
-
* Made initialize gracefully accept an empty array, or an array of Pathname instances
|
105
|
-
* Added support for ruby 1.9.3 and exiftool v8.15 (Ubuntu Natty) and v8.85 (current stable version)
|
106
|
-
|
107
|
-
### 0.0.5
|
108
|
-
|
109
|
-
Fixed homepage URL in gemspec
|
110
|
-
|
111
|
-
### 0.0.4
|
112
|
-
|
113
|
-
Added support for multiple file fetching (which is *much* faster for large directories)
|
data/Rakefile
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
|
3
|
-
require 'yard'
|
4
|
-
YARD::Rake::YardocTask.new do |t|
|
5
|
-
t.files = ['lib/**/*.rb', 'README.md']
|
6
|
-
end
|
7
|
-
|
8
|
-
require 'rake/testtask'
|
9
|
-
|
10
|
-
Rake::TestTask.new do |t|
|
11
|
-
t.libs.push "lib"
|
12
|
-
t.libs.push "test"
|
13
|
-
t.pattern = 'test/**/*_test.rb'
|
14
|
-
t.verbose = true
|
15
|
-
end
|
16
|
-
|
17
|
-
task :default => :test
|
data/exiftool.gemspec
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'exiftool/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = 'exiftool'
|
8
|
-
spec.version = Exiftool::VERSION
|
9
|
-
spec.authors = ['Matthew McEachen']
|
10
|
-
spec.email = %w(matthew-github@mceachen.org)
|
11
|
-
spec.homepage = 'https://github.com/mceachen/exiftoolr'
|
12
|
-
spec.summary = %q{Multiget ExifTool wrapper for ruby}
|
13
|
-
spec.description = %q{Multiget ExifTool wrapper for ruby}
|
14
|
-
spec.license = 'MIT'
|
15
|
-
|
16
|
-
spec.files = `git ls-files`.split("\n")
|
17
|
-
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.requirements << 'ExifTool (see http://www.sno.phy.queensu.ca/~phil/exiftool/)'
|
22
|
-
|
23
|
-
spec.add_dependency 'json'
|
24
|
-
spec.add_development_dependency 'rake'
|
25
|
-
spec.add_development_dependency 'bundler'
|
26
|
-
spec.add_development_dependency 'yard'
|
27
|
-
spec.add_development_dependency 'minitest'
|
28
|
-
spec.add_development_dependency 'minitest-great_expectations'
|
29
|
-
spec.add_development_dependency 'minitest-reporters' unless ENV['CI']
|
30
|
-
end
|
data/test/Canon 20D.jpg
DELETED
Binary file
|
data/test/Canon 20D.jpg.yaml
DELETED
@@ -1,225 +0,0 @@
|
|
1
|
-
---
|
2
|
-
:source_file: /Users/mrm/Dropbox/code/exiftoolr/test/Canon 20D.jpg
|
3
|
-
:exif_tool_version: 9.31
|
4
|
-
:file_name: Canon 20D.jpg
|
5
|
-
:directory: /Users/mrm/Dropbox/code/exiftoolr/test
|
6
|
-
:file_size: 2.9 MB
|
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:59.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
|
-
:modify_date: 2004-09-19 12:25:20.000000000 +00:00
|
21
|
-
:y_cb_cr_positioning: Co-sited
|
22
|
-
:exposure_time: !ruby/object:Rational
|
23
|
-
denominator: 250
|
24
|
-
numerator: 1
|
25
|
-
:f_number: 9.0
|
26
|
-
:exposure_program: Program AE
|
27
|
-
:iso: 200
|
28
|
-
:exif_version: '0221'
|
29
|
-
:date_time_original: 2004-09-19 12:25:20.000000000 +00:00
|
30
|
-
:create_date: 2004-09-19 12:25:20.000000000 +00:00
|
31
|
-
:components_configuration: Y, Cb, Cr, -
|
32
|
-
:shutter_speed_value: !ruby/object:Rational
|
33
|
-
denominator: 250
|
34
|
-
numerator: 1
|
35
|
-
:aperture_value: 9.0
|
36
|
-
:flash: Off, Did not fire
|
37
|
-
:focal_length: 85.0 mm
|
38
|
-
:macro_mode: Normal
|
39
|
-
:self_timer: 'Off'
|
40
|
-
:quality: Fine
|
41
|
-
:canon_flash_mode: 'Off'
|
42
|
-
:continuous_drive: Single
|
43
|
-
:focus_mode: One-shot AF
|
44
|
-
:record_mode: JPEG
|
45
|
-
:canon_image_size: Large
|
46
|
-
:easy_mode: Manual
|
47
|
-
:digital_zoom: None
|
48
|
-
:contrast: '+1'
|
49
|
-
:saturation: '+1'
|
50
|
-
:sharpness: '+1'
|
51
|
-
:metering_mode: Evaluative
|
52
|
-
:focus_range: Not Known
|
53
|
-
:canon_exposure_mode: Program AE
|
54
|
-
:lens_type: Unknown (-1)
|
55
|
-
:max_focal_length: 85 mm
|
56
|
-
:min_focal_length: 17 mm
|
57
|
-
:focal_units: 1/mm
|
58
|
-
:max_aperture: 5.6
|
59
|
-
:min_aperture: 32
|
60
|
-
:flash_activity: 0
|
61
|
-
:flash_bits: (none)
|
62
|
-
:focus_continuous: Single
|
63
|
-
:zoom_source_width: 0
|
64
|
-
:zoom_target_width: 0
|
65
|
-
:photo_effect: 'Off'
|
66
|
-
:manual_flash_output: n/a
|
67
|
-
:focal_type: Zoom
|
68
|
-
:focal_plane_x_size: 23.04 mm
|
69
|
-
:focal_plane_y_size: 15.37 mm
|
70
|
-
:auto_iso: 100
|
71
|
-
:base_iso: 200
|
72
|
-
:measured_ev: 13.25
|
73
|
-
:target_aperture: 9
|
74
|
-
:target_exposure_time: !ruby/object:Rational
|
75
|
-
denominator: 251
|
76
|
-
numerator: 1
|
77
|
-
:exposure_compensation: 0
|
78
|
-
:white_balance: Auto
|
79
|
-
:slow_shutter: None
|
80
|
-
:sequence_number: 0
|
81
|
-
:optical_zoom_code: n/a
|
82
|
-
:flash_guide_number: 0
|
83
|
-
:flash_exposure_comp: 0
|
84
|
-
:auto_exposure_bracketing: 'Off'
|
85
|
-
:aeb_bracket_value: 0
|
86
|
-
:control_mode: Camera Local Control
|
87
|
-
:measured_ev2: 13.5
|
88
|
-
:bulb_duration: 0
|
89
|
-
:camera_type: EOS Mid-range
|
90
|
-
:auto_rotate: None
|
91
|
-
:nd_filter: n/a
|
92
|
-
:self_timer2: 0
|
93
|
-
:canon_image_type: Canon EOS 20D
|
94
|
-
:canon_firmware_version: Firmware 1.0.2
|
95
|
-
:owner_name: unknown
|
96
|
-
:serial_number: 0330113864
|
97
|
-
:set_function_when_shooting: Image replay
|
98
|
-
:long_exposure_noise_reduction: 'Off'
|
99
|
-
:flash_sync_speed_av: Auto
|
100
|
-
:shutter-ae_lock: AF/AE lock
|
101
|
-
:af_assist_beam: Emits
|
102
|
-
:exposure_level_increments: 1/3 Stop
|
103
|
-
:flash_firing: Fires
|
104
|
-
:iso_expansion: 'On'
|
105
|
-
:aeb_sequence_auto_cancel: 0,-,+/Enabled
|
106
|
-
:superimposed_display: 'On'
|
107
|
-
:menu_button_display_position: Previous (top if power off)
|
108
|
-
:mirror_lockup: Disable
|
109
|
-
:af_point_selection_method: Normal
|
110
|
-
:ettlii: Evaluative
|
111
|
-
:shutter_curtain_sync: 1st-curtain sync
|
112
|
-
:safety_shift_in_av_or_tv: Disable
|
113
|
-
:lens_af_stop_button: AF stop
|
114
|
-
:add_original_decision_data: 'Off'
|
115
|
-
:canon_model_id: EOS 20D
|
116
|
-
:num_af_points: 9
|
117
|
-
:valid_af_points: 9
|
118
|
-
:canon_image_width: 3504
|
119
|
-
:canon_image_height: 2336
|
120
|
-
:af_image_width: 3504
|
121
|
-
:af_image_height: 2336
|
122
|
-
:af_area_width: 78
|
123
|
-
:af_area_height: 78
|
124
|
-
:af_area_x_positions: 8 -555 571 -931 8 947 -555 571 8
|
125
|
-
:af_area_y_positions: 504 270 270 4 4 4 -262 -262 -496
|
126
|
-
:af_points_in_focus: 4
|
127
|
-
:thumbnail_image_valid_area: 0 159 7 112
|
128
|
-
:serial_number_format: Format 2
|
129
|
-
:original_decision_data_offset: 0
|
130
|
-
:file_number: 793-9390
|
131
|
-
:bracket_mode: 'Off'
|
132
|
-
:bracket_value: 0
|
133
|
-
:bracket_shot_number: 0
|
134
|
-
:long_exposure_noise_reduction2: 'Off'
|
135
|
-
:wb_bracket_mode: 'Off'
|
136
|
-
:wb_bracket_value_ab: 0
|
137
|
-
:wb_bracket_value_gm: 0
|
138
|
-
:filter_effect: None
|
139
|
-
:toning_effect: None
|
140
|
-
:tone_curve: Standard
|
141
|
-
:sharpness_frequency: n/a
|
142
|
-
:sensor_red_level: 0
|
143
|
-
:sensor_blue_level: 0
|
144
|
-
:white_balance_red: 0
|
145
|
-
:white_balance_blue: 0
|
146
|
-
:color_temperature: 4800
|
147
|
-
:picture_style: None
|
148
|
-
:digital_gain: 0
|
149
|
-
:wb_shift_ab: 0
|
150
|
-
:wb_shift_gm: 0
|
151
|
-
:measured_rggb: 674 1024 1024 670
|
152
|
-
:vrd_offset: 0
|
153
|
-
:sensor_width: 3596
|
154
|
-
:sensor_height: 2360
|
155
|
-
:sensor_left_border: 84
|
156
|
-
:sensor_top_border: 19
|
157
|
-
:sensor_right_border: 3587
|
158
|
-
:sensor_bottom_border: 2354
|
159
|
-
:black_mask_left_border: 0
|
160
|
-
:black_mask_top_border: 0
|
161
|
-
:black_mask_right_border: 0
|
162
|
-
:black_mask_bottom_border: 0
|
163
|
-
:wb_rggb_levels_as_shot: 1973 1015 1015 1663
|
164
|
-
:color_temp_as_shot: 4662
|
165
|
-
:wb_rggb_levels_auto: 1973 1023 1023 1663
|
166
|
-
:color_temp_auto: 4662
|
167
|
-
:wb_rggb_levels_daylight: 1995 1023 1023 1509
|
168
|
-
:color_temp_daylight: 5200
|
169
|
-
:wb_rggb_levels_shade: 2292 1023 1023 1267
|
170
|
-
:color_temp_shade: 7000
|
171
|
-
:wb_rggb_levels_cloudy: 2160 1023 1023 1373
|
172
|
-
:color_temp_cloudy: 6000
|
173
|
-
:wb_rggb_levels_tungsten: 1410 1023 1023 2408
|
174
|
-
:color_temp_tungsten: 3196
|
175
|
-
:wb_rggb_levels_fluorescent: 1797 1023 1023 2058
|
176
|
-
:color_temp_fluorescent: 3952
|
177
|
-
:wb_rggb_levels_flash: 2187 1023 1023 1333
|
178
|
-
:color_temp_flash: 6309
|
179
|
-
:wb_rggb_levels_custom1: 2095 1023 1023 1316
|
180
|
-
:color_temp_custom1: 6163
|
181
|
-
:wb_rggb_levels_custom2: 1912 1023 1023 1627
|
182
|
-
:color_temp_custom2: 4792
|
183
|
-
:color_tone: Normal
|
184
|
-
:user_comment: ''
|
185
|
-
:flashpix_version: '0100'
|
186
|
-
:color_space: sRGB
|
187
|
-
:exif_image_width: 3504
|
188
|
-
:exif_image_height: 2336
|
189
|
-
:interop_index: R98 - DCF basic file (sRGB)
|
190
|
-
:interop_version: '0100'
|
191
|
-
:focal_plane_x_resolution: 2886.363636
|
192
|
-
:focal_plane_y_resolution: 2885.805763
|
193
|
-
:focal_plane_resolution_unit: inches
|
194
|
-
:custom_rendered: Normal
|
195
|
-
:exposure_mode: Auto
|
196
|
-
:scene_capture_type: Standard
|
197
|
-
:compression: JPEG (old-style)
|
198
|
-
:thumbnail_offset: 9728
|
199
|
-
:thumbnail_length: 11259
|
200
|
-
:image_width: 3504
|
201
|
-
:image_height: 2336
|
202
|
-
:encoding_process: Baseline DCT, Huffman coding
|
203
|
-
:bits_per_sample: 8
|
204
|
-
:color_components: 3
|
205
|
-
:y_cb_cr_sub_sampling: YCbCr4:2:2 (2 1)
|
206
|
-
:aperture: 9.0
|
207
|
-
:drive_mode: Single-frame Shooting
|
208
|
-
:image_size: 3504x2336
|
209
|
-
:lens: 17.0 - 85.0 mm
|
210
|
-
:lens_id: Unknown 17-85mm
|
211
|
-
:scale_factor35efl: 1.0
|
212
|
-
:shooting_mode: Program AE
|
213
|
-
:shutter_speed: !ruby/object:Rational
|
214
|
-
denominator: 250
|
215
|
-
numerator: 1
|
216
|
-
:thumbnail_image: (Binary data 11259 bytes)
|
217
|
-
:wb_rggb_levels: 1973 1015 1015 1663
|
218
|
-
:blue_balance: 1.638424
|
219
|
-
:circle_of_confusion: 0.030 mm
|
220
|
-
:fov: 23.7 deg
|
221
|
-
:focal_length35efl: '85.0 mm (35 mm equivalent: 85.6 mm)'
|
222
|
-
:hyperfocal_distance: 26.91 m
|
223
|
-
:lens35efl: '17.0 - 85.0 mm (35 mm equivalent: 17.1 - 85.6 mm)'
|
224
|
-
:light_value: 13.3
|
225
|
-
:red_balance: 1.943842
|