exifr 1.1.1 → 1.1.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.
- data/lib/exifr/tiff.rb +21 -10
- data/tests/jpeg_test.rb +20 -1
- metadata +6 -6
data/lib/exifr/tiff.rb
CHANGED
@@ -305,23 +305,34 @@ module EXIFR
|
|
305
305
|
raise MalformedTIFF, "expected [degrees, minutes, seconds]" unless arr.length == 3
|
306
306
|
super
|
307
307
|
end
|
308
|
-
|
308
|
+
|
309
309
|
def to_f
|
310
310
|
reduce { |m,v| m * 60 + v}.to_f / 3600
|
311
311
|
end
|
312
312
|
end
|
313
313
|
|
314
|
+
def self.rational(n, d)
|
315
|
+
Rational.respond_to?(:reduce) ? Rational.reduce(n, d) : 1.quo(d)
|
316
|
+
end
|
317
|
+
|
318
|
+
def self.round(f, n)
|
319
|
+
q = (10 ** n)
|
320
|
+
(f * q).round.to_f / q
|
321
|
+
end
|
322
|
+
|
314
323
|
ADAPTERS = Hash.new { proc { |v| v } } # :nodoc:
|
315
324
|
ADAPTERS.merge!({
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
+
:date_time_original => time_proc,
|
326
|
+
:date_time_digitized => time_proc,
|
327
|
+
:date_time => time_proc,
|
328
|
+
:orientation => proc { |v| v.map{|v| ORIENTATIONS[v]} },
|
329
|
+
:gps_latitude => proc { |v| Degrees.new(v) },
|
330
|
+
:gps_longitude => proc { |v| Degrees.new(v) },
|
331
|
+
:gps_dest_latitude => proc { |v| Degrees.new(v) },
|
332
|
+
:gps_dest_longitude => proc { |v| Degrees.new(v) },
|
333
|
+
:shutter_speed_value => proc { |v| v.map { |v| rational(1, (2 ** v).to_i) } },
|
334
|
+
:aperture_value => proc { |v| v.map { |v| round(1.4142 ** v, 1) } }
|
335
|
+
})
|
325
336
|
|
326
337
|
# Names for all recognized TIFF fields.
|
327
338
|
TAGS = ([TAG_MAPPING.keys, TAG_MAPPING.values.map{|v|v.values}].flatten.uniq - IFD_TAGS).map{|v|v.to_s}
|
data/tests/jpeg_test.rb
CHANGED
@@ -18,7 +18,7 @@ class JPEGTest < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def test_raises_malformed_jpeg
|
23
23
|
assert_raise MalformedJPEG do
|
24
24
|
JPEG.new(StringIO.new("djibberish"))
|
@@ -43,6 +43,24 @@ class JPEGTest < Test::Unit::TestCase
|
|
43
43
|
assert_equal JPEG.new(f('image.jpg')).comment, "Here's a comment!"
|
44
44
|
end
|
45
45
|
|
46
|
+
def test_shutter_speed_value
|
47
|
+
{
|
48
|
+
'canon-g3.exif' => Rational(1, 1244),
|
49
|
+
'Canon_PowerShot_A85.exif' => Rational(1, 806)
|
50
|
+
}.each do |file, expected|
|
51
|
+
assert_equal expected, TIFF.new(f(file)).shutter_speed_value
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_aperture_value
|
56
|
+
{
|
57
|
+
'canon-g3.exif' => 4.5,
|
58
|
+
'Canon_PowerShot_A85.exif' => 2.8
|
59
|
+
}.each do |file, expected|
|
60
|
+
assert_equal expected, TIFF.new(f(file)).aperture_value
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
46
64
|
def test_exif
|
47
65
|
assert ! JPEG.new(f('image.jpg')).exif?
|
48
66
|
assert JPEG.new(f('exif.jpg')).exif?
|
@@ -99,4 +117,5 @@ class JPEGTest < Test::Unit::TestCase
|
|
99
117
|
|
100
118
|
assert count > 0, 'no thumbnails found'
|
101
119
|
end
|
120
|
+
|
102
121
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exifr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 2
|
10
|
+
version: 1.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- R.W. van 't Veer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-02-20 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements: []
|
92
92
|
|
93
93
|
rubyforge_project:
|
94
|
-
rubygems_version: 1.
|
94
|
+
rubygems_version: 1.4.2
|
95
95
|
signing_key:
|
96
96
|
specification_version: 3
|
97
97
|
summary: EXIF Reader is a module to read EXIF from JPEG images.
|