lib/tiff.rb in exifr-0.10.3 vs lib/tiff.rb in exifr-0.10.4
- old
+ new
@@ -35,10 +35,13 @@
# EXIFR::TIFF.new('DSC_0218.TIF').exposure_time # => Rational(1, 100)
# EXIFR::TIFF.new('DSC_0218.TIF').orientation # => EXIFR::TIFF::Orientation
class TIFF
include Enumerable
+ # JPEG thumbnails
+ attr_reader :jpeg_thumbnails
+
TAG_MAPPING = {} # :nodoc:
TAG_MAPPING.merge!({
:image => {
0x00FE => :new_subfile_type,
0x00FF => :subfile_type,
@@ -315,10 +318,17 @@
else; raise 'no II or MM marker found'
end
@ifds = [IFD.new(data)]
while ifd = @ifds.last.next; @ifds << ifd; end
+
+ @jpeg_thumbnails = @ifds.map do |ifd|
+ if ifd.jpeg_interchange_format && ifd.jpeg_interchange_format_length
+ start, length = ifd.jpeg_interchange_format, ifd.jpeg_interchange_format_length
+ data[start..(start + length)]
+ end
+ end.compact
end
# Number of images.
def size
@ifds.size
@@ -411,9 +421,10 @@
'@fields'
end
private
def add_field(field)
return unless tag = TAG_MAPPING[@type][field.tag]
+
if IFD_TAGS.include? tag
@fields[tag] = IFD.new(@data, field.offset, tag)
else
value = field.value.map { |v| ADAPTERS[tag][v] } if field.value
@fields[tag] = value.kind_of?(Array) && value.size == 1 ? value.first : value
\ No newline at end of file