Dynamic Images
Ruby library providing image rendering described by dynamic templates
Dependencies
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.
Example
These Hash
es 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.
Example
These examples are considered as same.
DynamicImage.new do |img|
img.text "<b>Warning</b>"
img.save! "warning.png"
end
DynamicImage.new do
text "<b>Warning</b>"
save! "warning.png"
end
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://github.com/malis/dynamic_images.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.html
format.png { render_image } #or render_image("show.jpg"), find more in doc
end
end
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" "https://raw.github.com/malis/dynamic_images/master/lib/parsers/xml.dtd">
<dynamic_images>
<dynamic_image width="500" align="center" background="blue 0.5">
<text font="Arial bold 20"><%= @article.title %></text>
<text indent="30"><%= @article.text %></text>
</dynamic_image>
</dynamic_images>
That’s all!
Library is tested under Rails 2.3.11 (ruby 1.8.7) and 3.1.1 (ruby 1.9.2)
Copying
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.