exifr 0.10.4 → 0.10.5
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/CHANGELOG +4 -0
- data/Rakefile +1 -1
- data/bin/exifr +2 -2
- data/lib/jpeg.rb +10 -9
- data/lib/tiff.rb +12 -10
- metadata +41 -34
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
data/bin/exifr
CHANGED
data/lib/jpeg.rb
CHANGED
@@ -50,28 +50,29 @@ module EXIFR
|
|
50
50
|
|
51
51
|
private
|
52
52
|
def examine(io)
|
53
|
-
raise 'malformed JPEG' unless io.getc == 0xFF && io.getc == 0xD8 # SOI
|
54
|
-
|
55
53
|
class << io
|
56
|
-
def
|
54
|
+
def readbyte; readchar; end unless method_defined?(:readbyte)
|
55
|
+
def readint; (readbyte << 8) + readbyte; end
|
57
56
|
def readframe; read(readint - 2); end
|
58
|
-
def readsof; [readint,
|
57
|
+
def readsof; [readint, readbyte, readint, readint, readbyte]; end
|
59
58
|
def next
|
60
|
-
c =
|
61
|
-
c =
|
59
|
+
c = readbyte while c != 0xFF
|
60
|
+
c = readbyte while c == 0xFF
|
62
61
|
c
|
63
62
|
end
|
64
63
|
end unless io.respond_to? :readsof
|
65
64
|
|
65
|
+
raise 'malformed JPEG' unless io.readbyte == 0xFF && io.readbyte == 0xD8 # SOI
|
66
|
+
|
66
67
|
app1s = []
|
67
68
|
while marker = io.next
|
68
69
|
case marker
|
69
70
|
when 0xC0..0xC3, 0xC5..0xC7, 0xC9..0xCB, 0xCD..0xCF # SOF markers
|
70
71
|
length, @bits, @height, @width, components = io.readsof
|
71
72
|
raise 'malformed JPEG' unless length == 8 + components * 3
|
72
|
-
when 0xD9, 0xDA
|
73
|
-
when 0xFE
|
74
|
-
when 0xE1
|
73
|
+
when 0xD9, 0xDA; break # EOI, SOS
|
74
|
+
when 0xFE; (@comment ||= []) << io.readframe # COM
|
75
|
+
when 0xE1; app1s << io.readframe # APP1, may contain EXIF tag
|
75
76
|
else io.readframe # ignore frame
|
76
77
|
end
|
77
78
|
end
|
data/lib/tiff.rb
CHANGED
@@ -238,7 +238,7 @@ module EXIFR
|
|
238
238
|
|
239
239
|
time_proc = proc do |value|
|
240
240
|
if value =~ /^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/
|
241
|
-
Time.mktime($1, $2, $3, $4, $5, $6) rescue nil
|
241
|
+
Time.mktime($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i) rescue nil
|
242
242
|
else
|
243
243
|
value
|
244
244
|
end
|
@@ -258,13 +258,13 @@ module EXIFR
|
|
258
258
|
# Rotate and/or flip for proper viewing.
|
259
259
|
def transform_rmagick(img)
|
260
260
|
case @type
|
261
|
-
when :TopRight
|
262
|
-
when :BottomRight
|
263
|
-
when :BottomLeft
|
264
|
-
when :LeftTop
|
265
|
-
when :RightTop
|
266
|
-
when :RightBottom
|
267
|
-
when :LeftBottom
|
261
|
+
when :TopRight ; img.flop
|
262
|
+
when :BottomRight ; img.rotate(180)
|
263
|
+
when :BottomLeft ; img.flip
|
264
|
+
when :LeftTop ; img.rotate(90).flop
|
265
|
+
when :RightTop ; img.rotate(90)
|
266
|
+
when :RightBottom ; img.rotate(270).flop
|
267
|
+
when :LeftBottom ; img.rotate(270)
|
268
268
|
else
|
269
269
|
img
|
270
270
|
end
|
@@ -418,11 +418,13 @@ module EXIFR
|
|
418
418
|
end
|
419
419
|
|
420
420
|
def to_yaml_properties
|
421
|
-
'@fields'
|
421
|
+
['@fields']
|
422
422
|
end
|
423
|
+
|
423
424
|
private
|
424
425
|
def add_field(field)
|
425
426
|
return unless tag = TAG_MAPPING[@type][field.tag]
|
427
|
+
return if @fields[tag]
|
426
428
|
|
427
429
|
if IFD_TAGS.include? tag
|
428
430
|
@fields[tag] = IFD.new(@data, field.offset, tag)
|
@@ -469,7 +471,7 @@ module EXIFR
|
|
469
471
|
|
470
472
|
if len && pack
|
471
473
|
start = len > 4 ? @offset : (pos + 8)
|
472
|
-
@value = pack[data[start..(start + len - 1)]]
|
474
|
+
@value = [pack[data[start..(start + len - 1)]]].flatten
|
473
475
|
end
|
474
476
|
end
|
475
477
|
end
|
metadata
CHANGED
@@ -1,33 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: exifr
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.10.
|
7
|
-
date: 2007-11-04 00:00:00 +01:00
|
8
|
-
summary: EXIF Reader is a module to read EXIF from JPEG images.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: remco@remvee.net
|
12
|
-
homepage: http://exifr.rubyforge.org/
|
13
|
-
rubyforge_project:
|
14
|
-
description:
|
15
|
-
autorequire: exifr
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.10.5
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- R.W. van 't Veer
|
8
|
+
autorequire: exifr
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2007-12-28 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: remco@remvee.net
|
18
|
+
executables:
|
19
|
+
- exifr
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
- CHANGELOG
|
31
25
|
files:
|
32
26
|
- Rakefile
|
33
27
|
- bin/exifr
|
@@ -55,18 +49,31 @@ files:
|
|
55
49
|
- tests/data/weird_date.exif
|
56
50
|
- README
|
57
51
|
- CHANGELOG
|
58
|
-
|
59
|
-
|
52
|
+
has_rdoc: true
|
53
|
+
homepage: http://exifr.rubyforge.org/
|
54
|
+
post_install_message:
|
60
55
|
rdoc_options: []
|
61
56
|
|
62
|
-
|
63
|
-
-
|
64
|
-
|
65
|
-
|
66
|
-
-
|
67
|
-
|
68
|
-
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: "0"
|
70
|
+
version:
|
69
71
|
requirements: []
|
70
72
|
|
71
|
-
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 1.0.1
|
75
|
+
signing_key:
|
76
|
+
specification_version: 2
|
77
|
+
summary: EXIF Reader is a module to read EXIF from JPEG images.
|
78
|
+
test_files: []
|
72
79
|
|