Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
@echo off
TITLE ImageOptimizer 1.0.2.0 от 01.07.2010
echo Image Optimizer - сборник программ для оптимизации изображений (PNG, JPEG) без потери качества (под оптимизацией понимается попиксельная беспотерьность при уменьшении размера в рамках того же формата), состоящий из следующих программ:  
echo * Advpng (входит в состав AdvanceComp 1.15 от 01.11.2005);
echo * DeflOpt 2.07 от 05.09.2007;
echo * Jhead 2.90 от 05.02.2010;
echo * Jpegtran (входит в состав Libjpeg 8b от 16.05.2010);
echo * OptiPng 0.6.4 от 15.03.2010;
echo * PngCrush 1.7.11 от 10.05.2010;
echo * PngOut от 09.06.2010;
echo * PrePng от 17.05.10;
echo * Zlib 1.2.5 от 19.04.2010.
echo Автор не несет ответственность за работу данного приложения.
echo Вы используете данную программу под свой страх и риск.
echo Скопируйте необходимые изображения или папки с изображениями в папку "Images" и нажмите на Enter для продолжения.
 
pause>nul
 
setlocal ENABLEDELAYEDEXPANSION
set logfile=file.log
 
:png
1>nul 2>nul dir /b /s /a-d Images\*.png || goto:jpeg
 
:loop1
set png=
echo Параметр оптимизации PNG:
echo [1] Noninterlaced;
echo [2] Adam7 (Interlaced).
set /p png="Укажите параметр оптимизации PNG и нажмите на Enter: "
if defined png if "%png%" neq "1" if "%png%" neq "2" goto:loop1
 
:jpeg
1>nul 2>nul dir /b /s /a-d Images\*.jpg Images\*.jpeg && goto:loop2
if defined png goto :pngwork
echo Изображения формата *.png и *.jpg (*.jpeg) в папке "Images" не обнаружены.
echo Нажмите на Enter для выхода из приложения.
pause>nul
goto:eof
 
:loop2
set jpeg=
echo Параметр оптимизации JPEG:
echo [1] Optimize;
echo [2] Progressive;
echo [3] Progressive vs. Optimize (сравниваются по размеру файлы, полученные обоими методами сжатия, и выбирается файл с наименьшим размером).
echo Внимание: при Progressive'ом методе сжатие оригинальное и полученное изображения попиксельно будут отличаться, но на глаз определить не возможно.
set /p jpeg="Укажите параметр оптимизации JPEG и нажмите на Enter: "
if defined jpeg if "%jpeg%" neq "1" if "%jpeg%" neq "2" if "%jpeg%" neq "3" goto:loop2
 
:pngwork
if not defined png goto :jpegwork
if %png%==1 goto:Noninterlaced
if %png%==2 goto:Adam7
goto:jpegwork
 
:Noninterlaced
echo Noninterlaced
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    set origsize=%%~zi
    "%~dp0Docs\prepng.exe" "%%~fi"
    call :pngopt "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
    call :savelog "%%i" !origsize!
)
goto :jpegwork
 
:pngopt
"%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 -full -force %1 > %temp%\png.log
for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
    set f=%%i
)
set f=%f:~1,1%
del %temp%\png.log
"%~dp0Docs\pngout.exe" /k0 /n2 /f%f% %1
exit /b
 
:Adam7
echo Adam7
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    set origsize=%%~zi
    "%~dp0Docs\prepng.exe" "%%~fi"
    "%~dp0Docs\optipng.exe" -i1 "%%~fi"
    "%~dp0Docs\pngcrush.exe" -rem alla -brute -reduce "%%~fi" "%%~dpni.tmp"
    move /y "%%~dpni.tmp" "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
    "%~dp0Docs\optipng.exe" -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
    call :savelog "%%i" !origsize!
)
 
:jpegwork
if not defined jpeg goto:eof
if %jpeg%==1 goto:Optimize
if %jpeg%==2 goto:Progressive
if %jpeg%==3 goto:Progressive_Optimize
goto:eof
 
:Optimize
echo JPEG - Optimize
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
    set origsize=%%~zi
    "%~dp0Docs\jpegtran.exe" -copy all -optimize "%%~fi" "%%~fi"
    "%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
    call :savelog "%%i" !origsize!
)
goto:eof
 
:Progressive
echo JPEG - Progressive
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
    set origsize=%%~zi
    "%~dp0Docs\jpegtran.exe" -copy all -progressive "%%~fi" "%%~fi"
    "%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
    call :savelog "%%i" !origsize!
)
goto:eof
 
:Progressive_Optimize
echo JPEG - Progressive vs. Optimize
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
    set origsize=%%~zi
    "%~dp0Docs\jpegtran.exe" -copy all -progressive "%%~fi" "%%~dpni_pro.tmp"
    "%~dp0Docs\jpegtran.exe" -copy all -optimize "%%~fi" "%%~dpni_opt.tmp"
    call :compare "%%~dpni_pro.tmp" "%%~dpni_opt.tmp" "%%~fi" "%%~nxi"
    "%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
    call :savelog "%%i" !origsize!
)
goto:eof
 
:compare
if %~z1 LSS %~z2 (
    DEL /F /Q %2
    DEL /F /Q %3
    REN %1 %4
) else (
    DEL /F /Q %1
    DEL /F /Q %3
    REN %2 %4
)
exit /b
 
:savelog
set /a "perc=%~z1*1000/%2"
echo %~nx1;%2;%~z1;%perc:~,-1%.%perc:~-1% >>%logfile%
exit /b

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 21:42 25-06-2010 | Исправлено: res2001, 16:02 26-06-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru