public
Description: Ruby/CLI: Automatic lossless reduction of all your images
Homepage:
Clone URL: git://github.com/grosser/smusher.git
name age message
file .gitignore Sat Jan 24 06:14:39 -0800 2009 now singleton + cmd-line interface... [grosser]
file README.markdown Thu Oct 08 09:27:53 -0700 2009 added version to cmdline interface [grosser]
file Rakefile Mon Oct 05 02:05:51 -0700 2009 switching to rubyforge [grosser]
file VERSION Fri Oct 09 02:15:42 -0700 2009 Version bump to 0.4.2 [grosser]
directory bin/ Thu Oct 08 09:27:53 -0700 2009 added version to cmdline interface [grosser]
directory lib/ Fri Oct 09 02:15:35 -0700 2009 do not append newline to generated image, thank... [grosser]
directory rdoc/ Mon Oct 05 02:05:51 -0700 2009 switching to rubyforge [grosser]
file smusher.gemspec Fri Oct 09 02:15:47 -0700 2009 Regenerated gemspec for version 0.4.2 [grosser]
directory spec/ Fri Oct 09 02:15:35 -0700 2009 do not append newline to generated image, thank... [grosser]
README.markdown

Problem

  • Images are too large because they are not optimized
  • Users & your bandwidth is wasted for useless metadata
  • local image optimization requires tons of programs / libaries / knowledge

Solution

  • LOSSLESS size reduction (10-97% size reduction) in the cloud
  • optmizes all images(jpg+png+[gif]) from a given folder

Install

install ruby + rubygems
sudo gem install smusher

Usage

Optimize a single image or a whole folder in the cloud.

converting gif-s to png-s:

  • called with a folder gif-s will not be converted
  • called on a single .gif or wildcard, image(s) will be converted if optimizeable

Usage:

smusher /apps/x/public/images [options]
smusher /apps/x/public/images/x.png [options]
smusher /apps/x/public/images/*.png [options]

Options are:

-q, --quiet                      no output
-c, --convert-gifs               convert all .gif`s in the given folder
--service PunyPng                use PunyPng for image optimizing, instead of SmushIt
-v, --version                    display current version

Protection

Any image that returns a failure code, is larger than before, or is empty will not be saved.

Example

smusher /apps/ts/public/images
  smushing /apps/rs/public/images/social/facebook_icon.png
  2887 -> 132                              = 4%

  smushing /apps/rs/public/images/social/myspace_icon.png
  3136 -> 282                              = 8%

  smushing /apps/rs/public/images/dvd/dvd_1.png
  5045 -> 4                                = 0%
  reverted!
  ...

TODO

  • only optimize 'new' images -> save time when doing on each deploy
  • convert gifs to png, even if the new size is the same, for consistency (atm only those which get smaller are converted)

ALTERNATIVES

If you want to lossless reduce images and minify css + js, try reduce.

Authors

Contributors

Michael Grosser
grosser.michael@gmail.com
Hereby placed under public domain, do what you want, just do not hold me accountable...