@echo off 1>nul chcp 1251 TITLE ImageOptimizer 1.2.0.0 от 30.08.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 * PngOut от 09.06.2010; echo * PrePng от 17.05.10; echo * Zlib 1.2.5 от 19.04.2010. echo. echo Авторы (lorents и res2001) не несут ответственность за работу данного приложения. echo Вы используете данное приложение под свой страх и риск. if not exist "%~dp0Docs\advpng.exe" set "nofile=AdvPng " if not exist "%~dp0Docs\deflopt.exe" set "nofile=%nofile%DeflOpt " if not exist "%~dp0Docs\jhead.exe" set "nofile=%nofile%Jhead " if not exist "%~dp0Docs\jpegtran.exe" set "nofile=%nofile%Jpegtran " if not exist "%~dp0Docs\optipng.exe" set "nofile=%nofile%OptiPng " if not exist "%~dp0Docs\pngout.exe" set "nofile=%nofile%PngOut " if not exist "%~dp0Docs\prepng.exe" set "nofile=%nofile%PrePng " if not exist "%~dp0Docs\zlib.dll" set "nofile=%nofile%Zlib" if defined nofile ( echo. echo Приложение не смогло получить доступ к следующим файлам: %nofile% echo Нажмите на Enter для выхода из приложения. pause>nul goto:eof ) echo. echo Скопируйте необходимые картинки или папки с картинками в папку "Images" и нажмите на Enter для продолжения. pause>nul setlocal ENABLEDELAYEDEXPANSION set logfile=Images.csv if not exist %logfile% echo File name;Original Size;Output Size;Change in Bytes;%% of Original>>%logfile% :png 1>nul 2>nul dir /b /s /a-d Images\*.png || goto:jpeg :loop1 echo. set png= echo Параметр оптимизации PNG - Interlace: echo [1] Noninterlaced; echo [2] Adam7 (Interlaced). echo Если Вы не хотите оптимизировать картинки формата PNG, то, не вводя параметр оптимизации, нажмите на Enter. set /p png="Укажите параметр оптимизации PNG и нажмите на Enter: " if defined png if "%png%" neq "1" if "%png%" neq "2" ( echo. echo Вы указали неправильное значение параметра оптимизации/сжатии картинок. & goto:loop1 ) if not defined png set png=100 :jpeg 1>nul 2>nul dir /b /s /a-d Images\*.jpg Images\*.jpeg Images\*.jpe && goto:loop2 if defined png goto :pngwork echo. echo Картинки формата PNG и JPEG в папке "Images" не обнаружены. echo Нажмите на Enter для выхода из приложения. pause>nul goto:eof :loop2 echo. set jpeg= echo Параметр оптимизации JPEG - Encoding Process: echo [1] Optimized; echo [2] Progressive; echo [3] Progressive vs. Optimize (сравниваются по размеру картинки, полученные обоими методами сжатия, и выбирается файл с наименьшим размером). echo Если Вы не хотите оптимизировать картинки формата JPEG, то, не вводя параметр оптимизации, нажмите на Enter. set /p jpeg="Укажите параметр оптимизации JPEG и нажмите на Enter: " if defined jpeg if "%jpeg%" neq "1" if "%jpeg%" neq "2" if "%jpeg%" neq "3" ( echo. echo Вы указали неправильное значение параметра оптимизации/сжатии картинок. & 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 /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 -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 Images\*.jpe') do ( set origsize=%%~zi "%~dp0Docs\jpegtran.exe" -copy all -optimize -perfect "%%~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 Images\*.jpe') do ( set origsize=%%~zi "%~dp0Docs\jpegtran.exe" -copy all -progressive -perfect "%%~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 Images\*.jpe') do ( set origsize=%%~zi "%~dp0Docs\jpegtran.exe" -copy all -progressive -perfect "%%~fi" "%%~dpni_pro.tmp" "%~dp0Docs\jpegtran.exe" -copy all -optimize -perfect "%%~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 "change=%~z1-%2" set /a "perc=%~z1*100/%2" echo %~nx1;%2;%~z1;%change%;%perc%>>%logfile% exit /b |