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