<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: magick code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 17 May 2008 08:25:57 GMT</pubDate>
    <description>DZone Snippets: magick code</description>
    <item>
      <title>Howto resize multiple pictures, graphics, images</title>
      <link>http://snippets.dzone.com/posts/show/5440</link>
      <description>&lt;code&gt;&lt;br /&gt;for k in $(ls *.jpg); do convert -resize 800 -quality 80 $k r800-$k; done&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 29 Apr 2008 16:41:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5440</guid>
      <author>flynets (Flynets is an italian student of computer science with passion for GNU/Linux and hacktivism.)</author>
    </item>
    <item>
      <title>Batch re-size a collection of images from the command line</title>
      <link>http://snippets.dzone.com/posts/show/5298</link>
      <description>&lt;code&gt;&lt;br /&gt;for img in $(ls *.png); do convert $img -resize 75% smaller-$img; done;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 01 Apr 2008 09:33:24 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5298</guid>
      <author>27stars (27stars)</author>
    </item>
    <item>
      <title>Generate a graph using Gruff</title>
      <link>http://snippets.dzone.com/posts/show/5168</link>
      <description>This Ruby code produced a graph using gruff.  The output shows a &lt;a href="http://twitxr.com/image/6822/"&gt;line graph&lt;/a&gt; [twitxr.com] for the different fruits. Source code origin: &lt;a href="http://nubyonrails.com/pages/gruff"&gt;Gruff Update With Bar Graphs | Ruby on Rails for Newbies&lt;/a&gt; [rubyonrails.com]&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'gruff'&lt;br /&gt;&lt;br /&gt;g = Gruff::Line.new&lt;br /&gt;g.title = "My Graph" &lt;br /&gt;&lt;br /&gt;g.data("Apples", [1, 2, 3, 4, 4, 3])&lt;br /&gt;g.data("Oranges", [4, 8, 7, 9, 8, 9])&lt;br /&gt;g.data("Watermelon", [2, 3, 1, 5, 6, 8])&lt;br /&gt;g.data("Peaches", [9, 9, 10, 8, 7, 9])&lt;br /&gt;&lt;br /&gt;g.labels = {0 =&gt; '2003', 2 =&gt; '2004', 4 =&gt; '2005'}&lt;br /&gt;&lt;br /&gt;g.write('my_fruity_graph.png')&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note: I executed the code within an irb session on my Gentoo box. With Gentoo, &lt;a href="http://gentoo-portage.com/dev-ruby/gruff"&gt;Gruff was installed&lt;/a&gt; [gentoo-portage.com] using the command emerge -va gruff. I tried installing it on Ubuntu but ran into some difficulty, even with help from the article &lt;a href="http://snippets.dzone.com/posts/show/4140"&gt;install rmagick ubuntu&lt;/a&gt; [dzone.com].&lt;br /&gt;&lt;br /&gt;*udpate 21:48 24-Feb*&lt;br /&gt;&lt;br /&gt;The following code does exactly as the same code above, however it uses XML to separate the data from the process, making it easier and more efficient to build graphs.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/ruby&lt;br /&gt;# file: xml2gruff.rb&lt;br /&gt;&lt;br /&gt;require 'rexml/document'&lt;br /&gt;require 'gruff'&lt;br /&gt;include REXML&lt;br /&gt;&lt;br /&gt;class Xml2Gruff&lt;br /&gt;  &lt;br /&gt;  def initialize(filename)&lt;br /&gt;    file = File.new(filename, 'r')&lt;br /&gt;    doc = Document.new(file)&lt;br /&gt;    # get the title&lt;br /&gt;    @title = doc.root.elements['summary/title'].text&lt;br /&gt;    &lt;br /&gt;    @record = Hash.new&lt;br /&gt;    # get each record&lt;br /&gt;    doc.root.elements.each('records/item') {|item|&lt;br /&gt;      avalues = Array.new&lt;br /&gt;      item.elements.each('values/value') { |value| avalues &lt;&lt; value.text.to_i }&lt;br /&gt;      @record[item.elements['label'].text] = avalues&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    # get the summary labels&lt;br /&gt;    @labels = Hash.new  &lt;br /&gt;    doc.root.elements.each('summary/scale/label') {|l| @labels[l.elements['value'].text.to_i] = l.elements['title'].text} &lt;br /&gt;    &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def save_line_graph(filename)&lt;br /&gt;&lt;br /&gt;    g = Gruff::Line.new&lt;br /&gt;    g.title = @title &lt;br /&gt;    @record.each {|label, data| g.data(label, data) }&lt;br /&gt;    g.labels = @labels&lt;br /&gt;    g.write(filename)&lt;br /&gt;&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if __FILE__ == $0&lt;br /&gt; x2g = Xml2Gruff.new('my_fruit.xml')&lt;br /&gt; x2g.save_line_graph('my_fruit2.png')&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;file: my_fruit.xml&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;graph&gt;&lt;br /&gt;  &lt;summary&gt;&lt;br /&gt;    &lt;title&gt;My Graph&lt;/title&gt;&lt;br /&gt;    &lt;scale&gt;&lt;br /&gt;      &lt;label&gt;&lt;title&gt;2003&lt;/title&gt;&lt;value&gt;0&lt;/value&gt;&lt;/label&gt;&lt;br /&gt;      &lt;label&gt;&lt;title&gt;2004&lt;/title&gt;&lt;value&gt;2&lt;/value&gt;&lt;/label&gt;&lt;br /&gt;      &lt;label&gt;&lt;title&gt;2005&lt;/title&gt;&lt;value&gt;4&lt;/value&gt;&lt;/label&gt;&lt;br /&gt;    &lt;/scale&gt;&lt;br /&gt;  &lt;/summary&gt;&lt;br /&gt;  &lt;records&gt;&lt;br /&gt;    &lt;item&gt;&lt;br /&gt;      &lt;label&gt;Apples&lt;/label&gt;&lt;br /&gt;      &lt;values&gt;&lt;value&gt;1&lt;/value&gt;&lt;value&gt;2&lt;/value&gt;&lt;value&gt;3&lt;/value&gt;&lt;value&gt;4&lt;/value&gt;&lt;value&gt;4&lt;/value&gt;&lt;value&gt;3&lt;/value&gt;&lt;/values&gt;&lt;br /&gt;    &lt;/item&gt;&lt;br /&gt;    &lt;item&gt;&lt;br /&gt;      &lt;label&gt;Oranges&lt;/label&gt;&lt;br /&gt;      &lt;values&gt;&lt;value&gt;4&lt;/value&gt;&lt;value&gt;8&lt;/value&gt;&lt;value&gt;7&lt;/value&gt;&lt;value&gt;9&lt;/value&gt;&lt;value&gt;8&lt;/value&gt;&lt;value&gt;9&lt;/value&gt;&lt;/values&gt;&lt;br /&gt;    &lt;/item&gt;&lt;br /&gt;    &lt;item&gt;&lt;br /&gt;      &lt;label&gt;Watermelon&lt;/label&gt;&lt;br /&gt;      &lt;values&gt;&lt;value&gt;2&lt;/value&gt;&lt;value&gt;3&lt;/value&gt;&lt;value&gt;1&lt;/value&gt;&lt;value&gt;5&lt;/value&gt;&lt;value&gt;6&lt;/value&gt;&lt;value&gt;8&lt;/value&gt;&lt;/values&gt;&lt;br /&gt;    &lt;/item&gt;&lt;br /&gt;    &lt;item&gt;&lt;br /&gt;      &lt;label&gt;Peaches&lt;/label&gt;&lt;br /&gt;      &lt;values&gt;&lt;value&gt;9&lt;/value&gt;&lt;value&gt;9&lt;/value&gt;&lt;value&gt;10&lt;/value&gt;&lt;value&gt;8&lt;/value&gt;&lt;value&gt;7&lt;/value&gt;&lt;value&gt;9&lt;/value&gt;&lt;/values&gt;&lt;br /&gt;    &lt;/item&gt;&lt;br /&gt;  &lt;/records&gt;&lt;br /&gt;&lt;/graph&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Reference: &lt;a href="http://gruff.rubyforge.org/"&gt;gruff's gruff-0.2.9 Documentation&lt;/a&gt; [rubyforge.org]&lt;br /&gt;&lt;a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=4&amp;url=http%3A%2F%2Ftopfunky.com%2Fclients%2Fblog%2F2006%2Fcanada_on_rails_gruff.pdf&amp;ei=2urBR-elJYe6-ALryoX2DA&amp;usg=AFQjCNEc0leNwpB7ai1MeHjDO3eD1T_kiQ&amp;sig2=SgqtwiMT6yb1-zOUqOl8pw"&gt;gruff graphs for ruby by geoffrey grosenbach&lt;/a&gt; [topfunky.com]</description>
      <pubDate>Sun, 24 Feb 2008 18:52:14 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5168</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Avatar Resizer</title>
      <link>http://snippets.dzone.com/posts/show/3860</link>
      <description>I go on a lot of Bulletin Board, every has its own limits of size for the avatars, instead of the resize manually I created a script which does it for me with RMagick&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/ruby&lt;br /&gt;require "RMagick"&lt;br /&gt;$SIZES = [80 , 100 , 110 , 128]&lt;br /&gt;&lt;br /&gt;if !ARGV[0]&lt;br /&gt;  puts "Usage: mk_avatars.rb SourceAvatarPath"&lt;br /&gt;  exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;image = Magick::Image.read(ARGV[0]).first&lt;br /&gt;$SIZES.each do |sz|&lt;br /&gt;  puts "Generating Avatar : #{sz}"&lt;br /&gt;  out = image.thumbnail(sz,sz)&lt;br /&gt;  file = "out_#{sz}.#{image.format}"&lt;br /&gt;  out.write(file)&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 23 Apr 2007 17:13:46 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3860</guid>
      <author>kedare (Mathieu Poussin)</author>
    </item>
    <item>
      <title>Resizing images using RMagick</title>
      <link>http://snippets.dzone.com/posts/show/1173</link>
      <description>&lt;code&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'RMagick'&lt;br /&gt;&lt;br /&gt;include Magick&lt;br /&gt;&lt;br /&gt;def append_filename(filename, suffix)&lt;br /&gt;  extrac = filename.split('.')&lt;br /&gt;  extrac[-2] += suffix&lt;br /&gt;  extrac.join('.')&lt;br /&gt;end                                                                                  &lt;br /&gt;ARGV.each do |f|&lt;br /&gt;  ImageList.new(f).resize(800, 600).write(append_filename(f, '_l'))&lt;br /&gt;  ImageList.new(f).resize(400, 300).write(append_filename(f, '_m'))&lt;br /&gt;  ImageList.new(f).resize(40, 30).write(append_filename(f, '_s'))&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 18 Jan 2006 17:59:56 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1173</guid>
      <author>nohmad (Gyoung-Yoon Noh)</author>
    </item>
  </channel>
</rss>
