OptiPNG is a small tool that allows you to convert on the fly (and in a batch) all your PNG files to a smaller file size. Amazingly, it doesn't loose any information.
# apt-get install optipngOn ArchLinux based distibution, do the following.
# pacman -S optipngOn RedHat based distribution, do the following.
# yum install optipng
Here are the most usefull flags I could found in the OptiPNG manuel. You may want to consult the help (optipng -h). Help will display the documentation in a compact view which is readable thant the man documentation.
-backup (or) -keep - keep a backup of the original file -dir - specify the output directory -preserve - preserve file attributes (timestamp, file owner, etc.) -out - output file name -o - how hard you want the tool to find the best compression (0-7) default : 2
First lets look at how to keep a backup of our file. The following code will copy the original file to example.png.bak and overight the example.png with the new compress image.
$ optipng -backup example.png
By default optipng will use the -o 2 option, it compressed the file by 12.37% which is not bad. Let see if we can increase it by using the -o 7 option. (remember our file is now called example.png.bak)
$ optipng -backup -o7 example.png.bak
Alright it seems the image could have been compressed a little more. This time we got 12.47%
But do I really need to use the -o 7 option? More you try to compress your image, more time it will take to OptiPNG to find the perfect compression attributes. The real question how many time can I sacrifice to compress all my files. I ran the previous example a second time, but this time I used the time function in Linux and here are the results
Note, I used the -preserve and the -out flags so you can see what happens. During the execution, I learned that you don't need to specify the -backup if you use the -out flag
$ optipng -preserve -o2 -out time-o2.png example.png
2.816 seconds for -o2, 12.37% of compression
$ optipng -preserve -o7 -out time-o7.png example.png
47.683 seconds for -o7, 12.47% of compression
In summary, it took 45 seconds to increase the compression by 1.535 KB on a 1.5 MB file. Now it is up to you to see if you really need that compression. I would say, if you are hosting your images on a website with a high volume traffic, it with be better to go the extra mile. Although, if you just want to send a picture to your mother, the extra compression won't really make a difference inside an email.
For those who are curious, the screenshots on this page were compress with the -o 7 flag with a compression rate around 75%. The images are only a few kilobytes so it only took around 2 seconds per images.