Пакетная оптимизация графики в PNG и JPEG

9 Февраля 2010 — Юрий
Оптимизация
6
комментариев

Такие методы оптимизации подходят, когда есть большое количество изображений, а времени возиться с ними просто нет или не хочется. Для обработки используются две программы: pngcrush и jpegtran. Если с первой программой еще можно разобраться для использования в потоковой обработке, то в jpegtran подобные механизмы просто отсутствуют. Здесь на помощь приходит консольный язык Windows.

Создаем обычный текстовый файл, который в дальнейшем переименовываем в .bat и пишем:

01
02
03
04
05
cd /d .
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc.jpg"
goto :eof
:wer
jpegtran -copy none -optimize -perfect "%~1" "%~2"

Это было для обработки JPEG файлов, а для PNG:

01
pngcrush -rem alla -reduce -brute -d ".\optimazed" *.png

Далее перемещаем bat-файлы и программу в папку с изображениями и запускаем. Файлы JPEG заменяются поверх, а PNG появятся в новой папке с названием optimazed.

Вот и все. Да подобные методы не всегда являются оптимальными, подходя индивидуально к каждому изображению можно добиться лучшего результата, но и времени на это потребуется больше. Тут все просто, быстро и без потери качества.

Скачать в формате rar Скачать программы в .rar (194 Кб)

Комментарии (6) написать комментарий
  • 1:14, 22 Декабря 2010 — wamFityarrito
    Приветики! Читаю не первый день странички. Да вот скорость соединения хромает. Как можно подписаться на вашу RSS-ленту? Хотел бы читать вас и дальше.
    ответить
    • 18:41, 22 Декабря 2010 — Юрий
      Можете подписаться http://art-creation.ru/blog/rss/
      Значок есть на главной странице.
      ответить
  • 22:04, 10 Января 2011 — max deltree
    мой вариант скрипта:

    @ echo off & setlocal enabledelayedexpansion & set numm=0
    for /f "delims= tokens=*" %%a in ('dir /b /s *.jpg') do (
    start /wait /min "" jpegtran.exe -copy none -optimize^
    "%%a" "%%~dpna_.jpg" && move /y "%%~dpna_.jpg" "%%~dpna.jpg"^
    && set numm +=1 && cls && echo !numm!
    )
    echo %date% %time% !numm! jpg>>numm.txt

    for /f "delims= tokens=*" %%v in ('dir /b /s *.png') do (
    start /wait /min "" pngcrush -rem alla -brute -reduce "%%v"^
    "%%~dpnv_.png" && move /y "%%~dpnv_.png" "%%~dpnv.png"^
    && set numm +=1 && cls && echo !numm!
    )
    echo %date% %time% !numm! png>>numm.txt

    Отличается от приведённого выше тем, что не сохраняет оригиналы, а перезаписывает их
    ответить
  • 5:32, 16 Января 2011 — Unalseescalay
    Поздравляю вас Старо-Новым годом, желаю вам в новом году успехов и спасибо что вы находите время поддерживать ваш замечательный блог!
    ответить
  • 13:36, 26 Января 2011 — Bus
    да,но это еще и не все...
    ответить
    • 14:44, 5 Мая 2017 — Иван
      А что еще?
      ответить
Написать комментарий