vendor/gems/prawn-0.3.0/lib/prawn/images.rb
# add the image at filename to the current page. Currently only
# JPG and PNG files are supported.
#
# Arguments:
# <tt>file</tt>:: path to file or an object that responds to #read
#
# Options:
# <tt>:at</tt>:: an array [x,y] with the location of the top left corner of the image.
# <tt>:position</tt>::  One of (:left, :center, :right) or an x-offset
# <tt>:vposition</tt>::  One of (:top, :center, :center) or an y-offset    
# <tt>:height</tt>:: the height of the image [actual height of the image]
# <tt>:width</tt>:: the width of the image [actual width of the image]
# <tt>:scale</tt>:: scale the dimensions of the image proportionally
# <tt>:fit</tt>:: scale the dimensions of the image proportionally to fit inside [width,height]
# 
#   Prawn::Document.generate("image2.pdf", :page_layout => :landscape) do     
#     pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg" 
#     image pigs, :at => [50,450], :width => 450                                      
#
#     dice = "#{Prawn::BASEDIR}/data/images/dice.png"
#     image dice, :at => [50, 450], :scale => 0.75 
#   end   
#
# If only one of :width / :height are provided, the image will be scaled
# proportionally.  When both are provided, the image will be stretched to 
# fit the dimensions without maintaining the aspect ratio.
#
#
# If :at is provided, the image will be place in the current page but
# the text position will not be changed.
#
#
# If instead of an explicit filename, an object with a read method is
# passed as +file+, you can embed images from IO objects and things
# that act like them (including Tempfiles and open-uri objects).
#
#   require "open-uri"
#
#   Prawn::Document.generate("remote_images.pdf") do 
#     image open("http://prawn.majesticseacreature.com/media/prawn_logo.png")
#   end
#
# This method returns an image info object which can be used to check the
# dimensions of an image object if needed. 
# (See also: Prawn::Images::PNG , Prawn::Images::JPG)
# 
add the image at filename to the current page. Currently only
JPG and PNG files are supported.

file:: path to file or an object that responds to #read

:at:: an array [x,y] with the location of the top left corner of the image.





If only one of :width / :height are provided, the image will be scaled
proportionally.  When both are provided, the image will be stretched to
fit the dimensions without maintaining the aspect ratio.

If :at is provided, the image will be place in the current page but
the text position will not be changed.

If instead of an explicit filename, an object with a read method is
passed as +file+, you can embed images from IO objects and things
that act like them (including Tempfiles and open-uri objects).

require "open-uri"



This method returns an image info object which can be used to check the
dimensions of an image object if needed.
add the image at filename to the current page . Currently only JPG and PNG files are supported . file :: path to file or an object that responds to #read : at :: an array [ x y ] with the location of the top left corner of the image . If only one of : width / : height are provided the image will be scaled proportionally . When both are provided the image will be stretched to fit the dimensions without maintaining the aspect ratio . If : at is provided the image will be place in the current page but the text position will not be changed . If instead of an explicit filename an object with a read method is passed as + file + you can embed images from IO objects and things that act like them ( including Tempfiles and open - uri objects ) . require " open - uri " This method returns an image info object which can be used to check the dimensions of an image object if needed .
def calc_image_dimensions(info, options)
      w = options[:width] || info.width
      h = options[:height] || info.height
      if options[:width] && !options[:height]
        wp = w / info.width.to_f 
        w = info.width * wp
        h = info.height * wp
      elsif options[:height] && !options[:width]         
        hp = h / info.height.to_f
        w = info.width * hp
        h = info.height * hp   
      elsif options[:scale] 
        w = info.width * options[:scale]
        h = info.height * options[:scale]
      elsif options[:fit] 
        bw, bh = options[:fit]
        bp = bw / bh.to_f
        ip = info.width / info.height.to_f
        if ip > bp
          w = bw
          h = bw / ip
        else
          h = bh
          w = bh * ip
        end
      end
      info.scaled_width = w
      info.scaled_height = h
      [w,h]
    end
def calc_image_dimensions ( info , options ) w = options [ :width ] || info . width h = options [ :height ] || info . height if options [ :width ] && ! options [ :height ] wp = w / info . width . to_f w = info . width * wp h = info . height * wp elsif options [ :height ] && ! options [ :width ] hp = h / info . height . to_f w = info . width * hp h = info . height * hp elsif options [ :scale ] w = info . width * options [ :scale ] h = info . height * options [ :scale ] elsif options [ :fit ] bw , bh = options [ :fit ] bp = bw / bh . to_f ip = info . width / info . height . to_f if ip > bp w = bw h = bw / ip else h = bh w = bh * ip end end info . scaled_width = w info . scaled_height = h [ w , h ] end
add the image at filename to the current page.
add the image at filename to the current page .
info
<not_specific>
options
<not_specific>