def initialize filename, quick=true
@logger = Logger.new(STDOUT)
@logger.datetime_format = "%H:%M:%S"
@logger.level = $DEBUG?(Logger::DEBUG):(Logger::INFO)
@filename = filename
@position = 0
@content = File.open(@filename).binmode.read
if MARKERS[read(2)]!="SOI"
raise NotJPEGFileException.new("Not a JPEG file: #{@filename}")
end
@markers = Array.new()
begin
catch(:end_of_metadata) do
while true
@markers << read_marker
end
end
rescue Exception=>e
@logger.info "Exception in file #{@filename}:\n"+e.to_s
raise e
end
seek(-2)
if !quick
@data = read_rest
end
@values = MultipleHash.new
@markers.each do |marker|
marker.parse
@values.add(marker, marker.values)
end
end