There are many situations where you would want to optimize or compress images. For example, to send family pics to your parents or to upload in your website. Though new image formats are emerging, JPEG, PNG and GIF are still the most used formats. This article explores 3 different tools to optimize each of these formats. The methods are lossy but the parameters are tunable for least visual difference. Though some of these are available in the default Ubuntu repos, we will get the latest versions and compile those from source (on Ubuntu).
1. jpegoptim
Excellent tool to optimize JPG or JPEG files. Many web services use this in the background.
Installation
$ sudo apt-get install libjpeg-dev $ git clone https://github.com/tjko/jpegoptim $ cd jpegoptim $ ./configure $ make $ sudo make install
Usage
$ jpegoptim --strip-all -m65 ~/myimage.jpg -d ~/tmp
–strip-all : strip all (Comment & Exif) markers from output file
-m[0..100] : set maximum image quality factor (disables lossless optimization mode, which is on by default)
-d : specify alternative destination directory for optimized files (default behaviour is to overwrite original)
Results
$ ll -tr ~/myimage.jpg ~/tmp/myimage.jpg -rw-r--r-- 1 neo neo 929K Jan 2 12:19 /home/neo/myimage.jpg -rw-rw-r-- 1 neo neo 251K Apr 8 07:40 /home/neo/tmp/myimage.jpg
2. pngquant
Optimizes PNG files (often up to 70%) and preserves full alpha transparency.
Installation
$ sudo apt-get install libpng-dev $ git clone git://github.com/pornel/pngquant $ cd pngquant $ ./configure $ make $ sudo make install
Usage
$ pngquant --quality=65-80 myimage.png -o myimage_comp.png
–quality min-max : don’t save below min, use fewer colours below max (0-100)
-o : output file name
Results
$ ll -tr ~/myimage* -rw-r----- 1 neo neo 2.2M Jan 5 00:56 /home/neo/myimage.png -rw-rw-r-- 1 neo neo 675K Apr 8 08:04 /home/neo/myimage_comp.png
3. gifsicle
Optimizes GIF files in addition to creating, editing, and getting information about GIF images and animations.
Installation
$ git clone https://github.com/kohler/gifsicle $ cd gifsicle $ autoreconf -i $ ./configure $ make $ sudo make install
Usage
$ gifsicle --colors 256 -O2 myimage.gif -o myimage_comp.gif
–colors N : reduce the number of colours to N (omit if you want to retain full colour space)
–optimize[=LEVEL] : optimization level
Results
$ ll -tr mygif* -rw-r----- 1 neo neo 251K Apr 8 06:41 mygif.gif -rw-rw-r-- 1 neo neo 53K Apr 8 08:16 mygif_comp.gif
Cool, thank you very much for the excellent post about optimizing images, you helped me a lot.