PNGのサイズを最適化

クリップボードや用意した画像から、サイズが最適化されたPNGを手軽に作ってみます。

可逆圧縮なので画質は変わりません。

必要なソフト
【PNGOUT】・・・PNGを最適化
http://advsys.net/ken/
【OptiPNG】・・・PNGを最適化
http://optipng.sourceforge.net/
【pngrewrite】・・・PNGを最適化
http://entropymine.com/jason/
【NConvert】・・・フォーマットを変換
http://www.xnview.com/
【Yukari (旧GlassCode FLAX with xPadie engine)】・・・減色
http://omoikane.kuronowish.com/
【choice.com and choice.exe】・・・選択肢
http://hp.vector.co.jp/authors/VA007219/
【Date Extension】・・・日時を取得
http://www.vector.co.jp/soft/win95/util/se399304.html

作成

  1. 各ソフトを
    • 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と同じ場所に置く。
  2. 以下の文字列をメモ帳などで「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
  3. 準備完了。
    • 「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
クリエイティブ・コモンズ・ライセンス
このサイトの文章は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
トップページ