vendor/bundle/ruby/1.9.1/gems/prawn-0.12.0/lib/prawn/images.rb
# Add the image at filename to the current page. Currently only
# JPG and PNG files are supported.
#
# NOTE: Prawn is very slow at rendering PNGs with alpha channels.  The
# workaround for those who don't mind installing RMagick is to use:
#
# http://github.com/amberbit/prawn-fast-png
#
# 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.

Prawn is very slow at rendering PNGs with alpha channels.  The
workaround for those who don't mind installing RMagick is to use.



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 . Prawn is very slow at rendering PNGs with alpha channels . The workaround for those who don ' t mind installing RMagick is to use . 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>