Автоматизация оптимизации изображений с JpegTran, OptiPng и PngOut

Просмотров: 8030Комментарии: 4
Полезные статьиПрограммы
Автоматизация оптимизации изображений с JpegTran, OptiPng и PngOut

Сегодня мы рассмотрим как оптимизировать изображения с помощью утилит JpegTran, OptiPng и PngOut в автоматическом режиме для своих изображений рекурсивно с сохранением структуры папок. В этом нам поможет простой пакетный файл *.bat. Данные утилиты позволяют сжимать изображения без потери и снижения качества.

Что нам понадобиться?

1. Скачиваем jpegtran

2. Скачиваем optipng

3. Скачиваем pngout

Рассмотрим пример в котором все изображения с расширением *.jpg мы будем обрабатывать утилитой jpegtran. А png изображения прогоним через optipng, а затем в pngout.

Шаг за шагом

1. Создадим папку D:/OptimizeImg в которую положим скачанные исполняемые файлы утилит jpegtran.exe, optipng.exe и pngout.exe.

2. Создадим в этой же папке директорию Images, в нее перекинем, к примеру, папку Uploads с нашего сайта, где нам необходимо оптимизировать изображения.

3. Создаем файл start.bat.

Данный исполняемый файл будет содержать следующий скрипт обработки:

@ECHO OFF
CLS
SetLocal EnableExtensions EnableDelayedExpansion
set home_path=%~dp0
set folder=images
echo Обработка *.JPG файлов через jpegtran
xcopy /y /t /c /i "%folder%" "_jpeg%folder%"
for /r %folder% %%a in (*.jpg) do (
   set fn=%%a& jpegtran -copy none -optimize -outfile %home_path%_jpeg!fn:%~dp0=! %home_path%!fn:%~dp0=!
)
echo Обработка *.PNG файлов через optipng
xcopy /y /t /c /i "%folder%" "_opti%folder%"
for /r %folder% %%a in (*.png) do (
   set fn=%%a&	optipng -o7 %home_path%!fn:%~dp0=! -out %home_path%_opti!fn:%~dp0=!
)
set folder=_opti%folder%
echo Обработка *.PNG файлов через pngout
xcopy /y /t /c /i "%folder%" "_png%folder%"
for /r %folder% %%a in (*.png) do (
   set fn=%%a& pngout /r %home_path%!fn:%~dp0=! -out %home_path%_png!fn:%~dp0=!
)
rmdir /s /q _opti
pause

В результате выполнения данного скрипта мы получим две папки _png и _jpeg в которых будут оптимизированные изображения с сохраненной структурой папок.

Обратите внимание, что другие файлы, например *.gif или *.zip не копируются, они остаются в исходной папке.

Поэтому теперь можно скопировать содержимое папок _png и _jpeg в исходную.

Такой же принцип можно использовать для таких утилит как jpegoptim и pngcrash:

echo Обработка *.JPG файлов через jpegoptim
xcopy /y /t /c /i "%folder%" "_jpeg%folder%"
for /r %folder% %%a in (.) do (
   set fn=%%a& jpegoptim %%~fa*.jpg --strip-all --dest=%home_path%_jpeg!fn:%~dp0=!
)
echo Обработка *.PNG файлов через pngcrash
xcopy /y /t /c /i "%folder%" "_png%folder%"
for /r %folder% %%a in (*.png) do (
   set fn=%%a&	pngcrush -rem alla -rem text -reduce -brute %home_path%!fn:%~dp0=! %home_path%_png!fn:%~dp0=!
)

Комментариев: 4 RSS

2 Denis 31-12-2014 02:59

Автор лучший! Но есть одна проблема: при добавлении параметра -quality возникают ошибки с именами файлов. Подскажите как решить эту проблему

3 Илья 21-05-2015 14:52

Спасибо за статью! Но проблема с jpegoptim. Он пишет, что директива -d или --dest указана не верно. И как уже подметил Denis, есть проблема с указанием качества для jpegtran. У кого-то есть решение данной проблемы?

4 Сергей 03-11-2016 00:04

Супер-батник!!! Только под win10 х64 не хочет работать.

1. Если просто запустить, консоль сообщает, что у jpegtran должны быть атрибуты и выдает список всех возможных атрибутов.

2. Если запустить от имени администратора, то русский шрифт кракозяблы и сообщение, что не найден файл: images (такой каталог есть)

может из-за х64?

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)