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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6dc62b83679b17b8dae3f44910af4e9d1d2cfcc4e22cc4687df5f59c7eb6151
4
- data.tar.gz: 7bd89d4a659431358c4e9bba56ff133466d0408da665b509b913be5a7960ce2c
3
+ metadata.gz: 46366399271dd2aea161ea1ba0d08d585bde0fe8f8d9e1d10864b2346eb72191
4
+ data.tar.gz: 00c070e8d534f48dc9b3b17c2c9be0e89b0976cbd8673feb67da7052a51d7782
5
5
  SHA512:
6
- metadata.gz: 1fd9a7202ad01ea9b143d1a74aa97b1cb1e5cb649aa28b5bb6ae8c23f0982d19cbe4977b07f2f71a2ea9204554080d68d3e467acc25c375de23c9c1a12d0e85f
7
- data.tar.gz: a00a1df2810fea82a32835998b1e249c99c40b92e4995bbed706a742536c408efe91935786c458dbb0ed7ba30de08cc6bcc73d6a274b850aff418d80df6b2747
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.to_hash[k.to_sym]
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.to_hash[key.to_sym].inspect]
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.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: 2025-01-10 00:00:00.000000000 Z
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.5.11
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: []