Advanced images optimizer
Оптимизатор изображений
- Ru: Как пользоваться Imgo
- En: Imgo User Guide
- png
- jpeg, jpg
- gif
- "imgo ." если запустить программу c точкой, в качестве параметра, то она рекурсивно будет искать все файлы (*.png, *.gif, *.jpg, *.jpeg) в текущей директории и всех поддиректориях, лежащих ниже, и попытается сжать их
- "imgo file.png" в качестве атрибута поддерживается имя сжимаемого файла
- "imgo file.png file2.gif" вместо одного файла можно указать несколько, через пробел
Уровни сжатия imgo можно условно разделить на 3 степени (это справедливо для формата PNG):
- "imgo file.png" базовый уровень сжатия (используется по умолчанию), работает относительно быстро, применяет "безопасные" преобразования, рекомендуется использовать на файлах, которые будут открываться c помощью IE6;
- "imgo -b file.png" продвинутый уровень сжатия (вызывается параметром -b или -brute), применяется весь набор преобразований, опасен же тем, что некоторые файлы (с прозрачностью) могут некорректно отображаться в IE6;
- "imgo -m -b file.png" достигается за счет многократного сжатия файла (вызывается параметром -m или -multipass). Замечено, что при дополнительном проходе можно сжать файл сильнее, обычно счет идет на байты и доли процента.
- "imgo -h", "imgo --help" - вывести справку
- "imgo -b", "imgo --brute" - перейти в режим продвинутого сжатия, опасен для IE6, сжимает лучше, но раза в 2-3 медленнее
- "imgo -png" - при рекурсивном обходе папки и ее поддиректорий обрабатывать только *.png файлы
- "imgo -jpg" - при рекурсивном обходе папки и ее поддиректорий обрабатывать только *.jpg и *.jpeg файлы
- "imgo -e", "imgo --emulate" - включение режима эмуляции, исходные файлы перезаписаны не будут, будет выведена только информация о том, насколько можно сжать файл\файлы
- "imgo -m", "imgo --multipass" - если файл удалось сжать, он будет обработан повторно, до тех пор, пока эффективность сжатия не будет равна 0
- "imgo -q", "imgo --quiet" - скрытый режим, никакой информации выведено не будет
- "imgo -V", "imgo --version" - выведет на экран версию скрипта
- "imgo -d", "imgo --diff" - после сжатия выводит на экран информацию (различия) между оригинальным файлом и сжатым (экспериментальная функция)
- "imgo -v", "imgo --log" - выводит на экран дополнительную информацию, применяется в отладочных целях
- "imgo -s", "imgo --separate" данная команда отрабатывает на файлах PNG24+Alpha, она создает дополнительно 3 файла. Первый - содержит все непрозрачные области (filename_imgcocmp_corp.png), второй - содержит все полупрозрачные области (filename_imgcocmp_alpha.png), третий - это конвертация первого файла в PNG8, с потерей качества!!! (filename_imgcocmp_corp-nq8.png). Полученные файлы можно обработать "imgo" для получения большей степени сжатия. Как применять эти файлы, можно посмотреть по адресу: http://www.artlebedev.ru/tools/technogrette/img/png-2/
- "imgo -bkgd#ffffff" устанавливает bKGD, после чего сжимает файл. Как использовать bKGD, можно узнать здесь: http://banzalik.ru/png24-ie6-bg/
- "imgo -rt" создает рядом с PNG24+Alpha файл filename_imgcocmp_rt.png, c удаленной Alpha (показывает все содержимое, скрытое за прозрачностью)
- "imgo -png8a" конвертирует PNG24+Alpha в PNG8+Alpha (возможны потери в качестве), более подробно - зачем это надо, http://cssing.org.ua/2008/11/07/png-8-alpha/
Некоторые операции, позволяющие сжать файл базируются на смене типа файла, на более "подходящий" для данного (конкретного) изображения.
Преобразования для формата PNG, все преобразования не влияют на картинку (не происходит визуального изменения изображения):
- Из индексированного в полноцветное (PNG8 -> PNG24)
- Понижение количества цветов (например PNG8 (256 цветов) -> PNG8 (20 цветов))
- tRNS в PNG+Alpha
- Изменение глубины изображения (битности на канал)
- Из Индексированного в GrayScale + Альфа
- Из Полноцветного+alpha в Полноцветное tRNS
- Полноцветный+alpha в GrayScale+alpha
- GrayScale+alpha в GrayScale tRNS
- чистка прозрачных областей (http://www.artlebedev.ru/tools/technogrette/img/png-3/)
Преобразования для формата JPG, все преобразования не влияют на картинку (не происходит визуального изменения изображения):
- включение прогрессивного режима (progressive)
- включение режима оптимизации (optimize)
- imagemagick
- pngout
- optipng
- pngrewrite
- exiftool
- advpng
- jpegtran
- gifsicle
- pngnq
- defluff
- bc
- Устанавливаем homebrew, если уже установлен - переходим дальше
- Если у вас OS X Mountain Lion, тогда установите X11
- Выполняем следующие команды в терминале:
brew install exiftool imagemagick optipng libjpeg gifsicle
formulas='pngrewrite.rb pngout.rb defluff.rb cryopng.rb imgo.rb'
for package in $formulas
do
brew install "https://raw.github.com/imgo/imgo-tools/master/Formula/"$package
done
You may need to use sudo
for brew, depending on your setup.
Часть используемого ПО распространяется только в виде бинарных файлов, в связи с чем есть некоторые трудности с запуском на x86 (не найден defluff).
## storing current dir
pushd . > /dev/null
### Installing needed packages
sudo apt-get install advancecomp libimage-exiftool-perl imagemagick \
optipng libjpeg-progs gifsicle pngnq \
tar unzip libpng-dev git
### Installing additional software
mkdir /tmp/imgo-installation/bin -p
cd /tmp/imgo-installation
# messages - log for warnings
messages=/tmp/imgo-installation/messages
### I reccomend to launch commands above manually! One by one. It could be very-very sad bad because you can catch some errors. Use it at your own risk!
# pngout
wget http://static.jonof.id.au/dl/kenutils/pngout-20150319-linux-static.tar.gz -O pngout.tar.gz
if [ -e pngout.tar.gz ];
then
tar -xvf pngout.tar.gz
cp pngout-20150319-linux-static/`uname -m`/pngout-static ./bin/pngout
else
echo " * pngout not installed" >> ${messages}
fi
# defluff. WARNING! There are i686 and x86_64 binaries only
wget https://github.com/imgo/imgo-tools/raw/master/src/defluff/defluff-0.3.2-linux-`uname -m`.zip -O defluff.zip
if [ -e defluff.zip ];
then
unzip defluff.zip
chmod a+x defluff
cp defluff /tmp/imgo-installation/bin
else
echo " * defluff not installed" >> ${messages}
fi
# cryopng
wget http://frdx.free.fr/cryopng/cryopng-linux-x86.tgz -O cryo.tgz
if [ -e cryo.tgz ];
then
tar -zxf cryo.tgz
cp cryo-files/cryopng /tmp/imgo-installation/bin
else
echo " * cryopng not installed" >> ${messages}
fi
# pngrewrite. building from sources. binaries only for win
# Do you really need pngrewrite? http://entropymine.com/jason/pngrewrite/
mkdir pngrewrite && cd pngrewrite/
wget http://entropymine.com/jason/pngrewrite/pngrewrite-1.4.0.zip -O pngrewrite.zip
if [ -e pngrewrite.zip ];
then
unzip pngrewrite.zip
make
cp ./pngrewrite /tmp/imgo-installation/bin
else
echo " * pngrewrite not installed" >> ${messages}
fi
cd ..
# imgo script. Yeah! Finally
git clone git://github.com/imgo/imgo.git
cp imgo/imgo /tmp/imgo-installation/bin/
# copy binaries to your local ~/bin or global /usr/local/bin
# mkdir -p ~/bin && cp /tmp/imgo-installation/bin/* ~/bin # or
sudo cp /tmp/imgo-installation/bin/* /usr/local/bin/
# show warnings summary after install complete
if [ -s "${messages}" ]; then cat ${messages}; fi
# dir restore and clean up
popd > /dev/null
rm -rf /tmp/imgo-installation
Данное ПО распространяется по Лицензии MIT.