VBScriptで画像を一括リサイズ
VBScriptで画像の一括リサイズを行ないます。
便利なライブラリがあるので、そちらを使用します。
簡単だしPNG対応ってのもGood。
VB標準のLoadPicture関数はPNGに対応してないんですね、、。
Doodle2 VBS用画像描画・変換COMコンポーネント
http://www.vector.co.jp/soft/winnt/prog/se219120.html
'PicConvertEx.vbs Option Explicit Const SCRIPT_NAME = "リサイズたん(*≧m≦)=3" Dim strExt, rszFolder Dim yoko, tate, tate_flg, stretch, i Dim fs, d, objArgs stretch = False tate_flg = False Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set d = CreateObject("Doodle2.MyCanvas") Set objArgs = WScript.Arguments If objArgs.Count = 0 Then WScript.Quit yoko = InputBox("横幅のピクセル値を入力して下さい。", SCRIPT_NAME) If yoko = "" Then WScript.Quit If IsNumeric(yoko) = False Then MsgBox "数値を入力して下さい。", vbExclamation, SCRIPT_NAME WScript.Quit ElseIf yoko = 0 Then MsgBox "0px はダメです。", vbExclamation, SCRIPT_NAME WScript.Quit End If tate = InputBox("縦幅のピクセル値を入力して下さい。", SCRIPT_NAME) If tate <> "" Then tate_flg = True If IsNumeric(tate) = False Then MsgBox "数値を入力するか、何も入力しないで下さい。", vbExclamation, SCRIPT_NAME WScript.Quit End If End If If tate_flg Then If MsgBox("縦横の比率を変えますか?", vbYesNo + vbQuestion, SCRIPT_NAME) = vbYes Then stretch = True End If rszFolder = fs.GetParentFolderName(objArgs(0)) & "\Resized" For i = 0 to objArgs.Count - 1 strExt = UCase(fs.GetExtensionName(objArgs(i))) Select Case strExt Case "JPG", "GIF", "PNG", "BMP" If fs.FolderExists(rszFolder) = False Then fs.CreateFolder rszFolder If tate_flg = False Then d.LoadFromFile objArgs(i) tate = CLng(d.Height / (d.Width / yoko)) End If d.ConvertFile objArgs(i), rszFolder & "\" & fs.GetFileName(objArgs(i)), strExt, yoko, tate, , , True, stretch End Select Next Set fs = Nothing Set d = Nothing
結果的にIfばかりになってごちゃごちゃしてしまった…(笑)
はじめはファイル名の「Ex」が無くて、もっとシンプルなVBScriptでしたが、
最近片幅を決定したらもう片幅を自動で算出する機能を追加して、
なんだか見辛くなってしまいました。でもまぁ使えます。
使い方
リサイズする画像ファイルをドラッグします。勿論、複数ドラッグ(一括リサイズ)も可能。
右クリックの「送る」を使うのも良いです。
オリジナルのデータには上書きせず、画像データのフォルダに「Resized」フォルダが作成され、
その中にリサイズ後のデータが格納されます。
既に同名ファイルが存在する場合、上書きします。
オリジナルのデータは残しての処理なので、上書きで良いかなって(笑)
InputBoxとMsgBox
色々と聞かれる訳ですが、まず、横幅は必ず指定します。
縦幅は、指定する場合は値を入力、指定しない場合は何も入力しません。(つまりそのままボタンを押す)
指定しない場合は比率を保ち、自動的に縦幅を割り出します。
もし縦幅を指定した場合、縦横の比率を変更するかどうかのMsgBoxが表示されます。
比率を保つ場合は、上下か左右に白の余白が出来ると思います。
比率を変える場合、指定した画像サイズいっぱいに伸縮します。
この場合猫ちゃんは横長でしたのでスリムになりましたが、
縦長の画像の場合、当然ながらおデブちゃんになります(笑)
ConvertFileの引数で画質や、ぼかすかどうかなど細かい設定が出来ますので、
詰めたい場合はDoodle2のヘルプを見ると良いと思います。
- 作者: 五十嵐貴之
- 出版社/メーカー: ソシム
- 発売日: 2009/06/01
- メディア: 単行本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (27件) を見る