圧縮率の異なるJPEG画像を自動生成するバッチファイル
先月はほとんどブログ更新できなかった。理由は訊かないで!www
で、業務上必要に迫られてというか、少しでもラクしたかったので
「1枚の画像(フォーマット不問)から、圧縮率が異なる5種類のJPEG画像を自動生成する」
バッチファイルを作成した(というのは建前で、実は別の画像処理をするために作ったバッチファイル。ここで公開するのはJPEG変換用に改造したもの)。
実行時にImageMagickが必要になるので、まずはこちらからダウンロード、インストールしておこう。
(ImageMagick-6.6.0-0-Q8-windows-dll.exe で動作確認済み)
インストールオプション(Select Additional Tasks)では、「Add application directory to your system path」にチェック。「Create a desktop icon」はチェックを外して構わない(Windows7ではImageMagick Displayで日本語パス名の画像を開けないようだ)。
その他のチェックボックスは、必要な場合のみチェック。
あとは、下記の青文字部分をテキストエディタにコピペし、ファイル名「JPEG画像圧縮率変換.BAT」とでもして適当なフォルダに保存。そのアイコンに画像ファイルをドロップすれば、C:\CONVERT_IMGに変換後の画像が保存される。
なお、ImageMagickでは日本語パス名のファイルをそのままでは処理できないため、ソレ用の対策も施してある。
【変換例】:(75.8KBのBMPファイルをJPEGに変換)
●-quality 20 (4.24KB)
●-quality 40 (6.43KB)
●-quality 60 (8.32KB)
●-quality 80 (11.5KB)
●-quality 100 (38.4KB)
べた塗りが多いドット絵は、-quality 100じゃないとアラが目立ってしまうね。
注意: 下記バッチファイルを使用した運用結果や、障害及び事故等に対して一切の責任を負いません。また、使用方法に関するお問い合わせにも、おそらくお答えできません。ファイル中のコメントを読む等して、自己責任でお使いください。
@echo off
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: JPEG画像圧縮率変換.BAT
:: (圧縮率の異なる5種類のファイルを生成)
::
:: written by toshi-u/gaecen ueno Mar.2,2010
::
:: ▼使い方
:: 画像ファイル(複数選択可能)、または画像ファイルが入っているフォルダを
:: 本バッチファイルへドロップする。
::
:: ▽ファイルドロップ時の挙動
:: ・多様なファイルフォーマットの画像を複数選択・変換可能
::
:: ▽フォルダドロップ時の挙動
:: ・環境変数SrcExtに記述された拡張子(フォーマット)のファイルのみ変換
:: ・1階層のみ変換(再帰処理しない)
::
:: 注)
:: 本バッチファイルの実行には、
:: ImageMagick(http://www.imagemagick.org/)が必要です。
::
:: CONVERT.EXEの対応フォーマット、コマンドラインオプションは下記URL参照
:: http://www.imagemagick.org/script/formats.php
:: http://www.imagemagick.org/script/convert.php
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: フォルダドロップ時に読み込む画像ファイル拡張子
set SrcExt=.jpg
:: 変換後の画像フォーマット拡張子(無指定時は元画像と同じ)
set DestExt=.jpg
:: Option[1~100] CONVERT.EXEの変換オプション
:: Suffix[1~100] 変換後のファイル名に付加するサフィックス
:: (Option[1]、[2]、[3]…と評価し、Option[n]=""で処理終了)
set Option[1]=-quality 20
set Suffix[1]=_Q20
set Option[2]=-quality 40
set Suffix[2]=_Q40
set Option[3]=-quality 60
set Suffix[3]=_Q60
set Option[4]=-quality 80
set Suffix[4]=_Q80
set Option[5]=-quality 100
set Suffix[5]=_Q100
:: 変換後画像保存ディレクトリ
set DestDir=C:\CONVERT_IMG
:: テンポラリファイル名(日本語使用不可)
set TempFileName=CONVERT_TEMP
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::
::: ImageMagickインストールパス取得 :::
:::::::::::::::::::::::::::::::::::::::
for /D %%I in ("C:\Program Files\ImageMagick*") do (
if not %%I=="" set IMPATH=%%I
)
if "%IMPATH%"=="" goto IM_NOTEXIST
if "%IMPATH%\convert.exe"=="" goto IM_NOTEXIST
goto IM_EXIST
:IM_NOTEXIST
echo.
echo ImageMagickがインストールされていません。
echo (http://www.imagemagick.org/ で入手できます)
pause
exit /b -1
:IM_EXIST
:: echo ImageMagick detected.. %IMPATH%
::::::::::::::::::::::::::::::
::: 保存先ディレクトリ作成 :::
::::::::::::::::::::::::::::::
if exist "%DestDir%" goto DESTDIR_EXIST
echo Making destination directory.. %DestDir%
mkdir "%DestDir%"
:DESTDIR_EXIST
::::::::::::::::::::::::::
::: 画像変換処理ループ :::
::::::::::::::::::::::::::
for %%I in (%*) do (
call :SUB_CONV %%I
shift
)
echo.
echo 変換完了しました。
echo.
pause
exit /b 0
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: (・◇・) (・◇・) (・◇・) Subroutines (・◇・) (・◇・) (・◇・) ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::
::: 画像変換処理Sub :::
:::::::::::::::::::::::
:SUB_CONV
if exist %~1\nul goto EXIST_DIRECTORY
:::::::::::: ファイルドロップ処理
call :SUB_EXECONV %1
goto RET_CONV
:::::::::::: ディレクトリドロップ処理
:EXIST_DIRECTORY
:: echo Directory exist.. %1
for %%J in ("%~1\*%SrcExt%") do (
call :SUB_CONV %%J
)
:RET_CONV
exit /b
::::::::::::::::::::::::::
::: CONVERT.EXE実行Sub :::
::::::::::::::::::::::::::
:SUB_EXECONV
setlocal ENABLEDELAYEDEXPANSION
set TempSrc=%TEMP%\~%TempFileName%%~x1
if not "%DestExt%"=="" goto SET_TEMPDEST
set DestExt=%~x1
:SET_TEMPDEST
set TempDest=%TEMP%\~~%TempFileName%%DestExt%
echo.
echo Converting: %~1
:::::::::::: テンポラリファイル作成(日本語パス対策)
copy "%~1" "!TempSrc!" > nul
:::::::::::: 変換実行
for /L %%I in (1,1,100) do (
if "!Option[%%I]!"=="" goto RET_EXECONV
"%IMPATH%\convert" !Option[%%I]! "!TempSrc!" "!TempDest!"
set DestPath=%DestDir%\%~n1!Suffix[%%I]!!DestExt!
echo -^> !DestPath!
copy "!TempDest!" "!DestPath!" > nul
)
:RET_EXECONV
del "!TempSrc!" > nul
del "!TempDest!" > nul
endlocal
exit /b
Sponsored Link
で、業務上必要に迫られてというか、少しでもラクしたかったので
「1枚の画像(フォーマット不問)から、圧縮率が異なる5種類のJPEG画像を自動生成する」
バッチファイルを作成した(というのは建前で、実は別の画像処理をするために作ったバッチファイル。ここで公開するのはJPEG変換用に改造したもの)。
実行時にImageMagickが必要になるので、まずはこちらからダウンロード、インストールしておこう。
(ImageMagick-6.6.0-0-Q8-windows-dll.exe で動作確認済み)
インストールオプション(Select Additional Tasks)では、「Add application directory to your system path」にチェック。「Create a desktop icon」はチェックを外して構わない(Windows7ではImageMagick Displayで日本語パス名の画像を開けないようだ)。
その他のチェックボックスは、必要な場合のみチェック。
あとは、下記の青文字部分をテキストエディタにコピペし、ファイル名「JPEG画像圧縮率変換.BAT」とでもして適当なフォルダに保存。そのアイコンに画像ファイルをドロップすれば、C:\CONVERT_IMGに変換後の画像が保存される。
なお、ImageMagickでは日本語パス名のファイルをそのままでは処理できないため、ソレ用の対策も施してある。
【変換例】:(75.8KBのBMPファイルをJPEGに変換)
●-quality 20 (4.24KB)
●-quality 40 (6.43KB)
●-quality 60 (8.32KB)
●-quality 80 (11.5KB)
●-quality 100 (38.4KB)
べた塗りが多いドット絵は、-quality 100じゃないとアラが目立ってしまうね。
注意: 下記バッチファイルを使用した運用結果や、障害及び事故等に対して一切の責任を負いません。また、使用方法に関するお問い合わせにも、おそらくお答えできません。ファイル中のコメントを読む等して、自己責任でお使いください。
@echo off
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: JPEG画像圧縮率変換.BAT
:: (圧縮率の異なる5種類のファイルを生成)
::
:: written by toshi-u/gaecen ueno Mar.2,2010
::
:: ▼使い方
:: 画像ファイル(複数選択可能)、または画像ファイルが入っているフォルダを
:: 本バッチファイルへドロップする。
::
:: ▽ファイルドロップ時の挙動
:: ・多様なファイルフォーマットの画像を複数選択・変換可能
::
:: ▽フォルダドロップ時の挙動
:: ・環境変数SrcExtに記述された拡張子(フォーマット)のファイルのみ変換
:: ・1階層のみ変換(再帰処理しない)
::
:: 注)
:: 本バッチファイルの実行には、
:: ImageMagick(http://www.imagemagick.org/)が必要です。
::
:: CONVERT.EXEの対応フォーマット、コマンドラインオプションは下記URL参照
:: http://www.imagemagick.org/script/formats.php
:: http://www.imagemagick.org/script/convert.php
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: フォルダドロップ時に読み込む画像ファイル拡張子
set SrcExt=.jpg
:: 変換後の画像フォーマット拡張子(無指定時は元画像と同じ)
set DestExt=.jpg
:: Option[1~100] CONVERT.EXEの変換オプション
:: Suffix[1~100] 変換後のファイル名に付加するサフィックス
:: (Option[1]、[2]、[3]…と評価し、Option[n]=""で処理終了)
set Option[1]=-quality 20
set Suffix[1]=_Q20
set Option[2]=-quality 40
set Suffix[2]=_Q40
set Option[3]=-quality 60
set Suffix[3]=_Q60
set Option[4]=-quality 80
set Suffix[4]=_Q80
set Option[5]=-quality 100
set Suffix[5]=_Q100
:: 変換後画像保存ディレクトリ
set DestDir=C:\CONVERT_IMG
:: テンポラリファイル名(日本語使用不可)
set TempFileName=CONVERT_TEMP
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::
::: ImageMagickインストールパス取得 :::
:::::::::::::::::::::::::::::::::::::::
for /D %%I in ("C:\Program Files\ImageMagick*") do (
if not %%I=="" set IMPATH=%%I
)
if "%IMPATH%"=="" goto IM_NOTEXIST
if "%IMPATH%\convert.exe"=="" goto IM_NOTEXIST
goto IM_EXIST
:IM_NOTEXIST
echo.
echo ImageMagickがインストールされていません。
echo (http://www.imagemagick.org/ で入手できます)
pause
exit /b -1
:IM_EXIST
:: echo ImageMagick detected.. %IMPATH%
::::::::::::::::::::::::::::::
::: 保存先ディレクトリ作成 :::
::::::::::::::::::::::::::::::
if exist "%DestDir%" goto DESTDIR_EXIST
echo Making destination directory.. %DestDir%
mkdir "%DestDir%"
:DESTDIR_EXIST
::::::::::::::::::::::::::
::: 画像変換処理ループ :::
::::::::::::::::::::::::::
for %%I in (%*) do (
call :SUB_CONV %%I
shift
)
echo.
echo 変換完了しました。
echo.
pause
exit /b 0
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: (・◇・) (・◇・) (・◇・) Subroutines (・◇・) (・◇・) (・◇・) ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::
::: 画像変換処理Sub :::
:::::::::::::::::::::::
:SUB_CONV
if exist %~1\nul goto EXIST_DIRECTORY
:::::::::::: ファイルドロップ処理
call :SUB_EXECONV %1
goto RET_CONV
:::::::::::: ディレクトリドロップ処理
:EXIST_DIRECTORY
:: echo Directory exist.. %1
for %%J in ("%~1\*%SrcExt%") do (
call :SUB_CONV %%J
)
:RET_CONV
exit /b
::::::::::::::::::::::::::
::: CONVERT.EXE実行Sub :::
::::::::::::::::::::::::::
:SUB_EXECONV
setlocal ENABLEDELAYEDEXPANSION
set TempSrc=%TEMP%\~%TempFileName%%~x1
if not "%DestExt%"=="" goto SET_TEMPDEST
set DestExt=%~x1
:SET_TEMPDEST
set TempDest=%TEMP%\~~%TempFileName%%DestExt%
echo.
echo Converting: %~1
:::::::::::: テンポラリファイル作成(日本語パス対策)
copy "%~1" "!TempSrc!" > nul
:::::::::::: 変換実行
for /L %%I in (1,1,100) do (
if "!Option[%%I]!"=="" goto RET_EXECONV
"%IMPATH%\convert" !Option[%%I]! "!TempSrc!" "!TempDest!"
set DestPath=%DestDir%\%~n1!Suffix[%%I]!!DestExt!
echo -^> !DestPath!
copy "!TempDest!" "!DestPath!" > nul
)
:RET_EXECONV
del "!TempSrc!" > nul
del "!TempDest!" > nul
endlocal
exit /b
Sponsored Link
2010-03-03 01:29
nice!(0)
コメント(0)
トラックバック(0)
コメント 0