class DynamicImage::ImageReader

Public Class Methods

new(data) click to toggle source
# File lib/dynamic_image/image_reader.rb, line 5
def initialize(data)
  @data = data
end

Public Instance Methods

format() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 9
def format
  DynamicImage::Format.sniff(file_header)
end
read() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 13
def read
  raise DynamicImage::Errors::InvalidHeader unless valid_header?

  if @data.is_a?(String)
    Vips::Image.new_from_buffer(@data, option_string)
  else
    Vips::Image.new_from_file(@data.path + option_string, access: :random)
  end
end
valid_header?() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 23
def valid_header?
  format ? true : false
end

Private Instance Methods

file_header() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 29
def file_header
  @file_header ||= read_file_header
end
option_string() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 33
def option_string
  format.animated? ? "[n=-1]" : ""
end
read_file_header() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 37
def read_file_header
  data_stream = stream
  header = data_stream.read(8)
  data_stream.seek((0 - header.length), IO::SEEK_CUR) if header
  header
end
stream() click to toggle source
# File lib/dynamic_image/image_reader.rb, line 44
def stream
  return StringIO.new(@data, "rb") if @data.is_a?(String)

  @data
end