def read_source(file, read, size=nil)
         if block_given?
            done = false

            while !done and !file.eof?
              read << file.getbyte
               done = yield read[-1]
            end
         else
            if size != nil
               if size > 0
                  total = 0
                  while !file.eof? and total < size
                     read << file.getbyte
                     total += 1
                  end
               end
            else
               file.each_byte {|byte| read << byte}
            end
         end
      end
def read_source(file, read, size=nil)
         if block_given?
            done = false

            while !done and !file.eof?
              read << file.getbyte
               done = yield read[-1]
            end
         else
            if size != nil
               if size > 0
                  total = 0
                  while !file.eof? and total < size
                     read << file.getbyte
                     total += 1
                  end
               end
            else
               file.each_byte {|byte| read << byte}
            end
         end
      end
def read_source ( file , read , size = nil ) if block_given? done = false while ! done and ! file . eof? read << file . getbyte done = yield read [ - 1 ] end else if size != nil if size > 0 total = 0 while ! file . eof? and total < size read << file . getbyte total += 1 end end else file . each_byte { | byte | read << byte } end end end
This method loads the data for an image from its source. The method
 accepts two call approaches. If called without a block then the method
 considers the size parameter it is passed. If called with a block the
 method executes until the block returns true.

 ==== Parameters
 size::  The maximum number of bytes to be read from the file. Defaults
         to nil to indicate that the remainder of the file should be read
         in.
This method loads the data for an image from its source . The method accepts two call approaches . If called without a block then the method considers the size parameter it is passed . If called with a block the method executes until the block returns true .