Last active
April 20, 2016 21:43
-
-
Save dieseltravis/343231 to your computer and use it in GitHub Desktop.
Usage: png.bat d:\images\
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| :: use this version when adding an option to Windows's Send To menu | |
| :: https://gist.github.com/dieseltravis/343231 | |
| @echo off | |
| setlocal enabledelayedexpansion | |
| :: use passed in folder | |
| SET folder=%~1 | |
| :: get original png sizes | |
| set oldsize=0 | |
| for %%F in ("%folder%\*.png") do ( set /a oldsize=!oldsize!+%%~zF ) | |
| echo Optimizing all PNGs in folder: "%folder%" ... | |
| :: OptiPNG http://optipng.sourceforge.net/ v0.7.5 03/24/2014 | |
| :: location of OptiPNG executable | |
| set optipng=.\OptiPng\optipng | |
| :: use zlib settings 256,512,1k,2k,4k,8k,16k,32k, compression level 9, memory levels 8 & 9, strategies 0-3, filters 0-5, preserving attributes if possible | |
| for %%z in (32k 16k 8k 4k 2k 1k 512 256) do for %%i in ("%folder%\*.png") do %optipng% -zc9 -zm8-9 -zs0-3 -f0-5 -zw%%z -preserve "%%i" | |
| :: get size of pngs after optipng | |
| set optisize=0 | |
| for %%F in ("%folder%\*.png") do ( set /a optisize=!optisize!+%%~zF ) | |
| :: AdvanceCOMP advpng http://advancemame.sourceforge.net/comp-download.html v1.19 03/11/2014 | |
| :: location of advpng executable | |
| set advpng=.\advancecomp\advpng | |
| :: recompress extreme | |
| for %%i in ("%folder%\*.png") do %advpng% -z -4 "%%i" | |
| :: get size of pngs after advpng | |
| set advcize=0 | |
| for %%F in ("%folder%\*.png") do ( set /a advcize=!advcize!+%%~zF ) | |
| :: PNGOut http://advsys.net/ken/ Feb 13 2015 | |
| :: location of pngout executable | |
| set pngout=.\pngout\pngout | |
| :: use block split threshholds of 0,128,192,256,512,1024 | |
| for %%b in (1024 512 256 192 128 0) do for %%i in ("%folder%\*.png") do %pngout% "%%i" /b%%b /r /kpt /y | |
| :: use Huffman blocks 1 or 2 | |
| for %%n in (2 1) do for %%i in ("%folder%\*.png") do %pngout% "%%i" /n%%n /r /kpt /y | |
| :: get size of pngs after pngout | |
| set pngosize=0 | |
| for %%F in ("%folder%\*.png") do ( set /a pngosize=!pngosize!+%%~zF ) | |
| :: jpegtran http://jpegclub.org/jpegtran/ version 9a 19-Jan-2014 | |
| echo Optimizing all JPGs in folder: "%folder%" ... | |
| :: location of jpegtran executable file | |
| set jpegtran=.\jpegtran\jpegtran | |
| :: get original size of all jpgs | |
| set oldjsize=0 | |
| for %%F in ("%folder%\*.jpg") do ( set /a oldjsize=!oldjsize!+%%~zF ) | |
| :: jpegtran doesn't like overwriting files, move them to a temp dir first | |
| set jpgtemp=%folder%\jpegtran | |
| md "%jpgtemp%" | |
| move /Y "%folder%\*.jpg" "%jpgtemp%\" > NUL | |
| :: execute jpegtran on all jpgs, with the destination set to the original path | |
| for %%i in ("%jpgtemp%\*.jpg") do %jpegtran% -copy none -optimize -verbose "%%i" "%folder%\%%~nxi" | |
| :: remove temp dir | |
| rd /S /Q "%jpgtemp%\" | |
| :: get new size | |
| set jpgtsize=0 | |
| for %%F in ("%folder%\*.jpg") do ( set /a jpgtsize=!jpgtsize!+%%~zF ) | |
| :: echo stats of bytes saved | |
| set /a bytessaved=%oldsize%-%optisize% | |
| echo %bytessaved% bytes saved with OptiPNG. | |
| set /a bytessaved=%optisize%-%advcize% | |
| echo %bytessaved% bytes saved with AdvanceCOMP. | |
| set /a bytessaved=%advcize%-%pngosize% | |
| echo %bytessaved% bytes saved with PNGOut. | |
| set /a jbytessaved=%oldjsize%-%jpgtsize% | |
| echo %jbytessaved% bytes saved with jpegtran. | |
| set /a bytessaved=%oldsize%-%pngosize%+%jbytessaved% | |
| echo %bytessaved% total bytes saved. | |
| endlocal | |
| pause |
Author
Author
This is my new script: https://gist.github.com/dieseltravis/883ecc7f71c216fd0c8f052ac3876f25
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Info on adding to Send To menu: http://www.howtogeek.com/howto/windows-vista/customize-the-windows-vista-send-to-menu/