How to Install pngquant on Linux and Reduce .PNG Image Size.
May 05 2015
PNGquant is one of best tool for lossy compression of PNG images. Its reduce the PNG image size upto 70% and maintain full alpha transparency.
Easy to convert large number of images,
Easy to integrate server side with shell script
Default pngquant installation path is, /usr/local/bin/pngquant
download and Installation:
# wget http://pngquant.org/pngquant-2.4.0-src.tar.bz2
# cd pngquant-2.4.0
# ./configure --with-openmp --with-lcms2
# cd pngquant-2.4.0
# ./configure --with-openmp --with-lcms2
Compiler: gcc
Debug: no
SSE: yes
OpenMP: yes
libpng: shared (1.2.49)
zlib: shared (1.2.3)
lcms2: error ... not found (please install libcms2-devel package)
Error :lcms2-devel packages could not found it just following below steps,
Solution:
Download the latest epel-release rpm from
http://dl.fedoraproject.org/pub/epel/6/x86_64/
Install epel-release rpm:
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Install lcms2-devel rpm package:
# yum install lcms2-devel -y
Then try again,
# ./configure --with-openmp --with-lcms2
Compiler: gcc
Debug: no
SSE: yes
OpenMP: yes
libpng: shared (1.2.49)
zlib: shared (1.2.3)
lcms2: shared (2.3)
To find the version:
# pngquant --version
2.4.0 (March 2015)
# pngquant --help
How to Use pngquant?
For example convert a .png file format, just see the image file size,before conversion,
# du -sch thelinuxfaq_pngquant.png
40K thelinuxfaq_pngquant.png
# pngquant -ext .png --force yourimage.png
Aftet conversion,
# du -sch thelinuxfaq_pngquant.png
22K thelinuxfaq_pngquant.png
Also, can convert with quality based,
# pngquant -ext .png --quality 30-50 --force yourimage.png
--force overwrite existing output files (synonym: -f)
--ext new.png set custom suffix/extension for output filenames
--quality min-max don't save below min, use fewer colors below max (0-100)
Before conversion file size,
# du -sch /home/thelinuxfaq/png-images
88K linuxfaq.png
88K thelinux_faq.png
88K the_linux.png
# find . -name '*.png' -exec pngquant -ext .png -force 256 {} \;
After conversion files size,
# du -sch *
40K linuxfaq.png
40K thelinux_faq.png
40K the_linux.png
How to use for PHP:
The below sample code for conversion with exec
<?php
echo $get_compress = exec("find /image/source/path -name '*.png' -exec /usr/local/bin/pngquant -ext .png -force 256 {} \;");
?>
Comments (0)