SSブログ

圧縮率の異なる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)
126754536335516120848_hoero2_Q20.jpg

●-quality 40 (6.43KB)
126754539008216302902_hoero2_Q40.jpg

●-quality 60 (8.32KB)
126754544326616201210_hoero2_Q60.jpg

●-quality 80 (11.5KB)
126754546466716414540_hoero2_Q80.jpg

●-quality 100 (38.4KB)
126754550763516120705_hoero2_Q100.jpg


べた塗りが多いドット絵は、-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


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。