exifr 1.4.1 → 1.5.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 +4 -4
- data/bin/exifr +2 -2
- data/lib/exifr/tiff.rb +37 -0
- data/tests/data/exif.jpg +0 -0
- data/tests/jpeg_test.rb +13 -0
- metadata +3 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 46366399271dd2aea161ea1ba0d08d585bde0fe8f8d9e1d10864b2346eb72191
|
|
4
|
+
data.tar.gz: 00c070e8d534f48dc9b3b17c2c9be0e89b0976cbd8673feb67da7052a51d7782
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f150aa591f2896f9e8d4baffbceb2e2b18b6d2ebbff0c8fb27abfe6a3e66e941544abc4d6bacac8ffc13b3d09886aa0f971b8d6fe36903c9d050992004521465
|
|
7
|
+
data.tar.gz: 58e57fed9a922908389cb7d997c512736351efa3d048f4b9973df56b295488626d10c924bef561c86a179e1acaac1be84986b79975f21cb5a09404418bd136b2
|
data/bin/exifr
CHANGED
|
@@ -15,7 +15,7 @@ def pp_jpeg(fname)
|
|
|
15
15
|
l << [k, v.inspect] if v
|
|
16
16
|
end
|
|
17
17
|
ks[4..-1].each do |k|
|
|
18
|
-
v = jpeg.exif.
|
|
18
|
+
v = jpeg.exif.send(k)
|
|
19
19
|
l << [k, v.inspect] if v
|
|
20
20
|
end
|
|
21
21
|
pp(fname, l)
|
|
@@ -27,7 +27,7 @@ def pp_tiff(fname)
|
|
|
27
27
|
l = []
|
|
28
28
|
l << ['width', img.width] << ['height', img.height]
|
|
29
29
|
img.to_hash.keys.map{|a|a.to_s}.sort{|a,b|a<=>b}.each do |key|
|
|
30
|
-
l << [key, img.
|
|
30
|
+
l << [key, img.send(key).inspect]
|
|
31
31
|
end
|
|
32
32
|
pp(tiff.size == 1 ? fname : "#{fname}[#{index}]", l)
|
|
33
33
|
end
|
data/lib/exifr/tiff.rb
CHANGED
|
@@ -153,6 +153,9 @@ module EXIFR
|
|
|
153
153
|
0x9000 => :exif_version,
|
|
154
154
|
0x9003 => :date_time_original,
|
|
155
155
|
0x9004 => :date_time_digitized,
|
|
156
|
+
0x9010 => :offset_time,
|
|
157
|
+
0x9011 => :offset_time_original,
|
|
158
|
+
0x9012 => :offset_time_digitized,
|
|
156
159
|
0x9101 => :components_configuration,
|
|
157
160
|
0x9102 => :compressed_bits_per_pixel,
|
|
158
161
|
0x9201 => :shutter_speed_value,
|
|
@@ -481,10 +484,44 @@ module EXIFR
|
|
|
481
484
|
gps_img_direction && gps_img_direction.to_f)
|
|
482
485
|
end
|
|
483
486
|
|
|
487
|
+
# File changed date time (with UTC offset when available).
|
|
488
|
+
def date_time
|
|
489
|
+
date_time_with_zone(:date_time, :offset_time)
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
# Date and time original image generated (with UTC offset when
|
|
493
|
+
# available).
|
|
494
|
+
def date_time_original
|
|
495
|
+
date_time_with_zone(:date_time_original, :offset_time_original)
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
# Date and time image digitized (with UTC offset when available).
|
|
499
|
+
def date_time_digitized
|
|
500
|
+
date_time_with_zone(:date_time_digitized, :offset_time_digitized)
|
|
501
|
+
end
|
|
502
|
+
|
|
484
503
|
def inspect # :nodoc:
|
|
485
504
|
@ifds.inspect
|
|
486
505
|
end
|
|
487
506
|
|
|
507
|
+
private
|
|
508
|
+
|
|
509
|
+
def date_time_with_zone(date_time_field, offset_time_field)
|
|
510
|
+
if self[date_time_field] && self[offset_time_field]
|
|
511
|
+
Time.new(
|
|
512
|
+
self[date_time_field].year,
|
|
513
|
+
self[date_time_field].month,
|
|
514
|
+
self[date_time_field].day,
|
|
515
|
+
self[date_time_field].hour,
|
|
516
|
+
self[date_time_field].min,
|
|
517
|
+
self[date_time_field].sec,
|
|
518
|
+
self[offset_time_field]
|
|
519
|
+
)
|
|
520
|
+
else
|
|
521
|
+
self[date_time_field]
|
|
522
|
+
end
|
|
523
|
+
end
|
|
524
|
+
|
|
488
525
|
class IFD # :nodoc:
|
|
489
526
|
attr_reader :type, :raw_fields, :fields, :offset
|
|
490
527
|
|
data/tests/data/exif.jpg
CHANGED
|
Binary file
|
data/tests/jpeg_test.rb
CHANGED
|
@@ -158,4 +158,17 @@ class JPEGTest < TestCase
|
|
|
158
158
|
assert_equal('978', j.date_time_digitized.strftime('%L'))
|
|
159
159
|
end
|
|
160
160
|
|
|
161
|
+
def test_offset_times
|
|
162
|
+
j = JPEG.new(f('exif.jpg'))
|
|
163
|
+
assert_equal('-01:00', j.offset_time)
|
|
164
|
+
assert_equal('+01:00', j.offset_time_original)
|
|
165
|
+
assert_equal('+02:00', j.offset_time_digitized)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def test_data_time_with_utc_offset
|
|
169
|
+
j = JPEG.new(f('exif.jpg'))
|
|
170
|
+
assert_equal(Time.new(2004, 9, 9, 15, 14, 26, '-01:00'), j.date_time)
|
|
171
|
+
assert_equal(Time.new(2004, 9, 9, 15, 14, 26, '+01:00'), j.date_time_original)
|
|
172
|
+
assert_equal(Time.new(2004, 9, 9, 15, 14, 26, '+02:00'), j.date_time_digitized)
|
|
173
|
+
end
|
|
161
174
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: exifr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- R.W. van 't Veer
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: test-unit
|
|
@@ -89,7 +88,6 @@ metadata:
|
|
|
89
88
|
changelog_uri: https://codeberg.org/rwv/exifr/raw/branch/master/CHANGELOG
|
|
90
89
|
documentation_uri: https://www.rubydoc.info/gems/exifr
|
|
91
90
|
homepage_uri: https://codeberg.org/rwv/exifr
|
|
92
|
-
post_install_message:
|
|
93
91
|
rdoc_options: []
|
|
94
92
|
require_paths:
|
|
95
93
|
- lib
|
|
@@ -104,8 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
104
102
|
- !ruby/object:Gem::Version
|
|
105
103
|
version: '0'
|
|
106
104
|
requirements: []
|
|
107
|
-
rubygems_version: 3.
|
|
108
|
-
signing_key:
|
|
105
|
+
rubygems_version: 3.6.9
|
|
109
106
|
specification_version: 4
|
|
110
107
|
summary: Read EXIF from JPEG and TIFF images
|
|
111
108
|
test_files: []
|