Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A daemon that automatically handles image optimization
Python
Tag: v0.2.7

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
imagy
LICENSE
MANIFEST.in
README.rst
requirements.txt
setup.py

README.rst

Imagy - make your website's images load upto 50% faster

Imagy is a file daemon, that watches your website's media root (where your images are stored) and automatically optimizes image files that are created or modified within.

Imagy uses lossless compression, so your users never have to load unnecessary bytes. Your images look the same, but load faster.

A lot of work has gone into making it set-and-forget. Instead of having to code up deamons, file watches and handle different file formats on your own, Imagy does all the work for you. All you need to do is

imagy /awesome/images/

and Imagy will start watching the directory /awesome/images/ and all its subdirectories for images that get created or modified.

The algorithms used are stable (don't further modify files after multiple invocations), however to make trying Imagy out as easy as possible, the default is to keep original files around for later reversal.

If you wish to stop using Imagy, run imagy --revert which will move all original images back to their initial location

If you have (rightfully) come to the conclusion that you don't really need to keep originals around, set KEEP_ORIGINALS in config.py to False. If you want to delete all already stored originals run imagy --deloriginals.

Getting Started

Imagy depends on a bunch of binaries (listed at the bottom) for image optimization. On Ubuntu (tested on 11.10) you can install everything with:

sudo apt-get install pngnq pngcrush imagemagick gifsicle libjpeg-progs

pip install imagy

That's it. Try it by running imagy.

If you don't have pip installed, you can find more information here: http://www.pip-installer.org/en/latest/installing.html#prerequisites

Example Usage

When starting out you can tell Imagy to optimize (initialize) a directory of new images:

$ ll img
total 52K
-rw-rw-r-- 1 ddd ddd 50K 2012-06-23 14:45 beach.jpg
$ imagy --init img
2012-06-23 14:48:27,133 INFO         Imagy started
2012-06-23 14:48:27,133 INFO         Storing settings in /home/ddd/.imagy, you can modify this path in config.py under STORE_PATH
2012-06-23 14:48:27,134 INFO         looking for not yet optimized files
2012-06-23 14:48:27,134 INFO         Compressing file /home/ddd/img/beach.jpg
$ ll img
total 80K
-rw-rw-r-- 1 ddd ddd 25K 2012-06-23 14:48 beach.jpg
-rw-rw-r-- 1 ddd ddd 50K 2012-06-23 14:48 beach-original.jpg

Afterwards you can let imagy start watching the directory (and all directories underneath it) by running

$ imagy img
2012-06-23 14:52:24,794 INFO         Imagy started
2012-06-23 14:52:24,794 INFO         Storing settings in /home/ddd/.imagy, you can modify this path in config.py under STORE_PATH
2012-06-23 14:52:24,795 WARNING      watching /home/ddd/img
2012-06-23 14:52:24,796 INFO         waiting for files
2012-06-23 14:52:24,796 INFO         Ctrl-C to quit

Credits

In the background Imagy uses the awesome library smush.py which exposes a general interface to handle the various file types.

Dependencies

  • imagemagick
  • gifsicle
  • jpegtran (on ubuntu in libjpeg-progs)
  • pngcrush
  • pngnq
Something went wrong with that request. Please try again.