PNGのサイズを最適化
クリップボードや用意した画像から、サイズが最適化されたPNGを手軽に作ってみます。
可逆圧縮なので画質は変わりません。
作成
- 各ソフトを
- C:\Program Files\pngout\pngout.exe
- C:\Program Files\optipng\optipng.exe
- C:\Program Files\pngrewrite\pngrewrite.exe
- C:\Program Files\XnView\nconvert.exe
- C:\Program Files\Yukari\FLAXC.exe
- C:\Program Files\dkclonesup\NT\choice.exe
- C:\Program Files\date_ex\date_ex.exe
か、C:\WINDOWS
か、C:\WINDOWS\system32 か、C:\local\bin か、png-nconvert.batと同じ場所に置く。
- 以下の文字列をメモ帳などで「png-nconvert.bat」という名前でどこかに保存する。
[png-nconvert.bat]@echo off
rem +-----------+
rem | PNG最適化 |
rem +-----------+
rem
rem ・このバッチファイルに1つの画像を放り込むと最適化済みPNGができる。
rem ・このバッチファイルを複数の画像だけがある場所にコピーして実行すると最適化済みPNGができる。
rem ・このバッチファイルを実行するとクリップボードから最適化済みPNGができる。
rem
echo 【PNGOUT】 http://advsys.net/ken/
echo 【OptiPNG】 http://optipng.sourceforge.net/
echo 【pngrewrite】 http://entropymine.com/jason/
echo 【NConvert】 http://www.xnview.com/
echo 【Yukari】 http://omoikane.kuronowish.com/
echo 【choice.com and choice.exe】http://hp.vector.co.jp/authors/VA007219/
echo 【Date Extension】 http://www.vector.co.jp/soft/win95/util/se399304.html
echo それぞれ
echo C:\Program Files\pngout\pngout.exe
echo C:\Program Files\optipng\optipng.exe
echo C:\Program Files\pngrewrite\pngrewrite.exe
echo C:\Program Files\XnView\nconvert.exe
echo C:\Program Files\Yukari\FLAXC.exe
echo C:\Program Files\dkclonesup\NT\choice.exe
echo C:\Program Files\date_ex\date_ex.exe
echo か、C:\WINDOWS か、C:\WINDOWS\system32 か、C:\local\bin か、
echo このバッチファイルと同じ場所に置いてください。
path %path%;%~dp0
path %path%;C:\local\bin\
path %path%;C:\Program Files\pngout\
path %path%;C:\Program Files\optipng\
path %path%;C:\Program Files\pngrewrite\
path %path%;C:\Program Files\XnView\
path %path%;C:\Program Files\Yukari\
path %path%;C:\Program Files\dkclonesup\NT\
path %path%;C:\Program Files\date_ex\
if "%~1" == "" (goto alone) else goto dnd
:alone
cd /d "%~dp0"
echo.
echo 1 : クリップボードから最適化済みPNGを作成
echo 2 : 複数の画像から最適化済みPNGを作成
echo 3 : キャンセル
echo.
choice.exe /C:123
if errorlevel 3 goto :EOF
if errorlevel 2 goto bomb
if errorlevel 1 goto clipboard
goto :EOF
:clipboard
for /f "usebackq" %%a in (`date_ex.exe yyyymmddhhnnss`) do set datetime=%%a
nconvert.exe -clipboard -out png -o "%~n0%datetime%.png"
echo.
echo 色数を選択
echo.
echo 1 : 8bits (256色)
echo 2 : 4bits (16色)
echo 3 : 1bit (2色)
echo 4 : 任意 (2〜256色)
echo 5 : 減色しない
echo.
choice.exe /C:12345
if errorlevel 5 goto cbPadied
if errorlevel 4 goto cbcon
if errorlevel 3 goto cb1bit
if errorlevel 2 goto cb4bits
if errorlevel 1 goto cb8bits
goto cbPadied
:cb8bits
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -P256 -R1 -B1
goto cbPadied
:cb4bits
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -P16 -R1 -B1
goto cbPadied
:cb1bit
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -P2 -R1 -B1
goto cbPadied
:cbcon
echo.
echo 色数を入力
echo (Enterで終了)
echo.
set /p number=
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -R1 -B1 -P%number%
set number=
:cbPadied
pngrewrite.exe "%~n0%datetime%.png" "%~n0%datetime%.png"
pngout.exe /y "%~n0%datetime%.png"
optipng.exe -o7 "%~n0%datetime%.png"
set datetime=
goto :EOF
:bomb
md tmp
copy *.bat tmp
cd tmp
echo cd ..>tmp.bat
echo del *.bat>>tmp.bat
echo copy * tmp\*.*.back>>tmp.bat
echo for %%%%i in (*) do if /i "%%%%~xi" neq ".png" nconvert.exe -in -1 -out png -o %%%%.png "%%%%i">>tmp.bat
echo echo.>>tmp.bat
echo echo 色数を選択>>tmp.bat
echo echo.>>tmp.bat
echo echo 1 : 8bits (256色)>>tmp.bat
echo echo 2 : 4bits (16色)>>tmp.bat
echo echo 3 : 1bit (2色)>>tmp.bat
echo echo 4 : 任意 (2〜256色)>>tmp.bat
echo echo 5 : 減色しない>>tmp.bat
echo echo.>>tmp.bat
echo choice.exe /C:12345>>tmp.bat
echo if errorlevel 5 goto bbPadied>>tmp.bat
echo if errorlevel 4 goto bbcon>>tmp.bat
echo if errorlevel 3 goto bb1bit>>tmp.bat
echo if errorlevel 2 goto bb4bits>>tmp.bat
echo if errorlevel 1 goto bb8bits>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bb8bits>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -P256 -R1 -B1>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bb4bits>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -P16 -R1 -B1>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bb1bit>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -P2 -R1 -B1>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bbcon>>tmp.bat
echo echo.>>tmp.bat
echo echo 色数を入力>>tmp.bat
echo echo (Enterで終了)>>tmp.bat
echo echo.>>tmp.bat
echo set /p number=>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -R1 -B1 -P%%number%%>>tmp.bat
echo set number=>>tmp.bat
echo :bbPadied>>tmp.bat
echo for %%%%i in (*.png) do pngrewrite.exe "%%%%i" "%%%%i">>tmp.bat
echo for %%%%i in (*.png) do pngout.exe /y "%%%%i">>tmp.bat
echo for %%%%i in (*.png) do optipng.exe -o7 "%%%%i">>tmp.bat
echo move tmp\*.back .>>tmp.bat
echo copy tmp\* .>>tmp.bat
echo del tmp.bat>>tmp.bat
echo rd /s /q tmp>>tmp.bat
tmp.bat
goto :EOF
:dnd
cd /d "%~dp1"
copy /y %1 "%~nx1.back"
if /i "%~x1" neq ".png" nconvert.exe -in -1 -out png -o %%.png %1
echo.
echo 色数を選択
echo.
echo 1 : 8bits (256色)
echo 2 : 4bits (16色)
echo 3 : 1bit (2色)
echo 4 : 任意 (2〜256色)
echo 5 : 減色しない
echo.
choice.exe /C:12345
if errorlevel 5 goto ddPadied
if errorlevel 4 goto ddcon
if errorlevel 3 goto dd1bit
if errorlevel 2 goto dd4bits
if errorlevel 1 goto dd8bits
goto ddPadied
:dd8bits
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -P256 -R1 -B1
goto ddPadied
:dd4bits
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -P16 -R1 -B1
goto ddPadied
:dd1bit
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -P2 -R1 -B1
goto ddPadied
:ddcon
echo.
echo 色数を入力
echo (Enterで終了)
echo.
set /p number=
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -R1 -B1 -P%number%
set number=
:ddPadied
pngrewrite.exe "%~n1.png" "%~n1.png"
pngout.exe /y "%~n1.png"
optipng.exe -o7 "%~n1.png"
goto :EOF
- 準備完了。
- 「png-nconvert.bat」に1つの画像を放り込むと最適化済みPNGができる。
- 「png-nconvert.bat」を複数の画像だけがある場所にコピーして実行すると最適化済みPNGができる。
- 「png-nconvert.bat」を実行するとクリップボードから最適化済みPNGができる。
元画像として使える形式・・・ http://www.xnview.com/en/formats.html
(GUIでは
- 【BlastPNG】
- http://omoikane.my-sv.net/
などが使いやすいと思います。)
おまけ
NConvertの代わりにIrfanViewを使う場合 (クリップボードにコピーした文字列から画像を作成することもできる)
- 【IrfanView】
- http://www.irfanview.com/
- (日本語版 http://www8.plala.or.jp/kusutaku/ )
これを
- C:\Program Files\IrfanView\i_view32.exe
か、C:\WINDOWS か、C:\WINDOWS\system32 か、C:\local\bin
か、png-iview.batと同じ場所に置いてください。
元画像として使える形式・・・ http://www.irfanview.com/main_formats.htm
[png-iview.bat]@echo off
rem +-----------+
rem | PNG最適化 |
rem +-----------+
rem
rem ・このバッチファイルに1つの画像を放り込むと最適化済みPNGができる。
rem ・このバッチファイルを複数の画像だけがある場所にコピーして実行すると最適化済みPNGができる。
rem ・このバッチファイルを実行するとクリップボードから最適化済みPNGができる。
rem
echo 【PNGOUT】 http://advsys.net/ken/
echo 【OptiPNG】 http://optipng.sourceforge.net/
echo 【pngrewrite】 http://entropymine.com/jason/
echo 【IrfanView】 http://www.irfanview.com/
echo 【Yukari】 http://omoikane.kuronowish.com/
echo 【choice.com and choice.exe】http://hp.vector.co.jp/authors/VA007219/
echo 【Date Extension】 http://www.vector.co.jp/soft/win95/util/se399304.html
echo それぞれ
echo C:\Program Files\pngout\pngout.exe
echo C:\Program Files\optipng\optipng.exe
echo C:\Program Files\pngrewrite\pngrewrite.exe
echo C:\Program Files\IrfanView\i_view32.exe
echo C:\Program Files\Yukari\FLAXC.exe
echo C:\Program Files\dkclonesup\NT\choice.exe
echo C:\Program Files\date_ex\date_ex.exe
echo か、C:\WINDOWS か、C:\WINDOWS\system32 か、C:\local\bin か、
echo このバッチファイルと同じ場所に置いてください。
path %path%;%~dp0
path %path%;C:\local\bin\
path %path%;C:\Program Files\pngout\
path %path%;C:\Program Files\optipng\
path %path%;C:\Program Files\pngrewrite\
path %path%;C:\Program Files\IrfanView\
path %path%;C:\Program Files\Yukari\
path %path%;C:\Program Files\dkclonesup\NT\
path %path%;C:\Program Files\date_ex\
if "%~1" == "" (goto alone) else goto dnd
:alone
cd /d "%~dp0"
echo.
echo 1 : クリップボードから最適化済みPNGを作成
echo 2 : 複数の画像から最適化済みPNGを作成
echo 3 : キャンセル
echo.
choice.exe /C:123
if errorlevel 3 goto :EOF
if errorlevel 2 goto bomb
if errorlevel 1 goto clipboard
goto :EOF
:clipboard
for /f "usebackq" %%a in (`date_ex.exe yyyymmddhhnnss`) do set datetime=%%a
i_view32.exe /clippaste /convert="%~dpn0%datetime%.png"
echo.
echo 色数を選択
echo.
echo 1 : 8bits (256色)
echo 2 : 4bits (16色)
echo 3 : 1bit (2色)
echo 4 : 任意 (2〜256色)
echo 5 : 減色しない
echo.
choice.exe /C:12345
if errorlevel 5 goto cbPadied
if errorlevel 4 goto cbcon
if errorlevel 3 goto cb1bit
if errorlevel 2 goto cb4bits
if errorlevel 1 goto cb8bits
goto cbPadied
:cb8bits
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -P256 -R1 -B1
goto cbPadied
:cb4bits
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -P16 -R1 -B1
goto cbPadied
:cb1bit
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -P2 -R1 -B1
goto cbPadied
:cbcon
echo.
echo 色数を入力
echo (Enterで終了)
echo.
set /p number=
FLAXC.exe "%~dpn0%datetime%.png" "%~dpn0%datetime%.png" -R1 -B1 -P%number%
set number=
:cbPadied
pngrewrite.exe "%~n0%datetime%.png" "%~n0%datetime%.png"
pngout.exe /y "%~n0%datetime%.png"
optipng.exe -o7 "%~n0%datetime%.png"
set datetime=
goto :EOF
:bomb
md tmp
copy *.bat tmp
cd tmp
echo cd ..>tmp.bat
echo del *.bat>>tmp.bat
echo copy * tmp\*.*.back>>tmp.bat
echo for %%%%i in (*) do if /i "%%%%~xi" neq ".png" i_view32.exe "%%%%i" /convert="%%%%~dpni.png">>tmp.bat
echo echo.>>tmp.bat
echo echo 色数を選択>>tmp.bat
echo echo.>>tmp.bat
echo echo 1 : 8bits (256色)>>tmp.bat
echo echo 2 : 4bits (16色)>>tmp.bat
echo echo 3 : 1bit (2色)>>tmp.bat
echo echo 4 : 任意 (2〜256色)>>tmp.bat
echo echo 5 : 減色しない>>tmp.bat
echo echo.>>tmp.bat
echo choice.exe /C:12345>>tmp.bat
echo if errorlevel 5 goto bbPadied>>tmp.bat
echo if errorlevel 4 goto bbcon>>tmp.bat
echo if errorlevel 3 goto bb1bit>>tmp.bat
echo if errorlevel 2 goto bb4bits>>tmp.bat
echo if errorlevel 1 goto bb8bits>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bb8bits>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -P256 -R1 -B1>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bb4bits>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -P16 -R1 -B1>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bb1bit>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -P2 -R1 -B1>>tmp.bat
echo goto bbPadied>>tmp.bat
echo :bbcon>>tmp.bat
echo echo.>>tmp.bat
echo echo 色数を入力>>tmp.bat
echo echo (Enterで終了)>>tmp.bat
echo echo.>>tmp.bat
echo set /p number=>>tmp.bat
echo for %%%%i in (*.png) do FLAXC.exe "%%%%i" "%%%%i" -R1 -B1 -P%%number%%>>tmp.bat
echo set number=>>tmp.bat
echo :bbPadied>>tmp.bat
echo for %%%%i in (*.png) do pngrewrite.exe "%%%%i" "%%%%i">>tmp.bat
echo for %%%%i in (*.png) do pngout.exe /y "%%%%i">>tmp.bat
echo for %%%%i in (*.png) do optipng.exe -o7 "%%%%i">>tmp.bat
echo move tmp\*.back .>>tmp.bat
echo copy tmp\* .>>tmp.bat
echo del tmp.bat>>tmp.bat
echo rd /s /q tmp>>tmp.bat
tmp.bat
goto :EOF
:dnd
cd /d "%~dp1"
copy /y %1 "%~nx1.back"
if /i "%~x1" neq ".png" i_view32.exe %1 /convert="%~dpn1.png"
echo.
echo 色数を選択
echo.
echo 1 : 8bits (256色)
echo 2 : 4bits (16色)
echo 3 : 1bit (2色)
echo 4 : 任意 (2〜256色)
echo 5 : 減色しない
echo.
choice.exe /C:12345
if errorlevel 5 goto ddPadied
if errorlevel 4 goto ddcon
if errorlevel 3 goto dd1bit
if errorlevel 2 goto dd4bits
if errorlevel 1 goto dd8bits
goto ddPadied
:dd8bits
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -P256 -R1 -B1
goto ddPadied
:dd4bits
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -P16 -R1 -B1
goto ddPadied
:dd1bit
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -P2 -R1 -B1
goto ddPadied
:ddcon
echo.
echo 色数を入力
echo (Enterで終了)
echo.
set /p number=
FLAXC.exe "%~dpn1.png" "%~dpn1.png" -R1 -B1 -P%number%
set number=
:ddPadied
pngrewrite.exe "%~n1.png" "%~n1.png"
pngout.exe /y "%~n1.png"
optipng.exe -o7 "%~n1.png"
goto :EOF