Ruby library providing image rendering described by dynamic templates
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Dynamic Images

Ruby library providing image rendering described by dynamic templates


Library is using these libraries:

  • cairo

  • pango

  • rexml

How to install & use

Download this repository and place it into your folder.

Require init.rb file from library's folder.

Optionaly you can load gtk2 libraty too. It's supporting another image formats.

For more information how to use or about elements read documentation.

Usage of Library

In general about options

Options should be in base given as hash. Format of keys in hash is not fixed. You can use Symbol as good as String. There is also no difference between “-” and “_” chars.

If option accepts more arguments you can specify they in Array and also in String. In case you choose String it's necessary to seperate arguments by space char.


These Hashes are considered as absolutelly same.

  • {:vertical_align => :middle}, {'vertical_align' => 'middle'}, {"vertical-align" => :middle}, {:vertical_align => "middle"}, {:vertical_align => :middle}, etc.

  • {:to_fit => [:crop, :sentences, 3, :resize]}, {:to_fit => "crop sentences 3 resize"}, {'to-fit' => "crop sentences 3 resize"}, etc.

Passing a Block

In block you can accept object to call methods on it or if you don't accept any argument, block is called in object instance.


These examples are considered as same. do |img|
  img.text "<b>Warning</b>"! "warning.png"
end do
  text "<b>Warning</b>"
  save! "warning.png"

Image formats

In base you can save and load all as PNG images. You can enable more formats by loading gtk library. DynamicImage will automatically detect it's loaded.

require 'gtk2'

Using with Rails

To use within Rails application just download this library as plugin.

rails plugin install git://

You need to add cairo and pango gems to your Gemfile or environment.rb file.

Then just update your controller like this:

def show
  @article = Article.find(params[:id])
  respond_to do |format|
    format.png { render_image } #or render_image("show.jpg"), find more in doc

Do not forgot to add mime types for used image formats to your environment file.

Mime::Type.register "image/png", :png

Create view articles/show.png.xml.erb like this:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE dynamic_images PUBLIC "-//malis//dynamic_images//EN" "">
  <dynamic_image width="500" align="center" background="blue 0.5">
    <text font="Arial bold 20"><%= @article.title %></text>
    <text indent="30"><%= @article.text %></text>

That's all!

Library is tested under Rails 2.3.11 (ruby 1.8.7) and 3.1.1 (ruby 1.9.2)


Copyright © 2012 Dominik Mališ

This program is free software. You can distribute/modify this program under the terms of the GNU LESSER GENERAL PUBLIC LICENSE.