exifr 0.10.4 → 0.10.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|