一定の幅に収まるように画像サイズを調整する

今回は一定サイズの幅に収まるように画像サイズを調整するスクリプトです。
前回のスクリプトと似ていますがキャンバスサイズを変更するのではなく、画像サイズを変更します。単純に画像サイズを変更するならばバッチ処理でできますが、縦横の比率がバラバラになっていて、さらに一定サイズ以下の幅の場合にはサイズを調整しない、というのはバッチ処理ではできません。
今回のスクリプトは横幅128ピクセル、縦幅64ピクセル以内に画像を収めるように処理します。128×64ピクセル以下の場合には何も処理せず、そのまま保存します。サイズを調整する際には縦横比を保ったまま調整します。

スクリプトではボリューム(ドライブ)の直下(ルート)にあるmotoフォルダ内にあるJPEG形式のファイルのみを開いてキャンバスサイズの調整を行ないボリューム(ドライブ)の直下(ルート)にあるresultフォルダ内に同じ名前で保存します。

wSize = 128;
hSize = 64;
folderRef = new Folder ("/moto/");
saveFolder = "/result/";
fileList = folderRef.getFiles("*.jpg");

jpegOpt = new JPEGSaveOptions();
jpegOpt.embedColorProfile = true;
jpegOpt.quality = 12;
jpegOpt.formatOptions = FormatOptions.PROGRESSIVE;
jpegOpt.scans = 3;
jpegOpt.matte = MatteType.NONE;

function setUnit(unt){ preferences.rulerUnits = unt;}
function getUnit(){ return preferences.rulerUnits;}
function setResize()
{
var n,imgW,imgH;
var w = parseFloat(activeDocument.width);
var h = parseFloat(activeDocument.height);
saveUnit = getUnit();
setUnit(Units.PIXELS);
if ((w <= wSize) && (h <=hSize)) return;
if (w > h)
{
if (w > wSize)
{
n = wSize/w;
if ( (h*n) > hSize)
{
n = hSize / h;
imgW = w * n;
imgH = hSize;
}else{
imgW = wSize;
imgH = h * n;
}
activeDocument.resizeImage(imgW,imgH);
}
}else{
if (h > hSize)
{
n = hSize / h;
if ( (w*n) > wSize)
{
n = wSize / w;
imgW = wSize;
imgH = h * n;
}else{
imgW = w * n;
imgH = hSize;
}
activeDocument.resizeImage(imgW,imgH);
}
}
setUnit(saveUnit);
}

for (i=0; i<fileList.length; i++)
{
fileRef = new File(fileList[i].fullName);
open(fileRef);
setResize();

fileObj = new File(saveFolder+fileList[i].name);
activeDocument.saveAs(fileObj, jpegOpt, true, Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}

修正可能な部分は前回とほぼ同じですが説明しておきます。
JPEG画像のあるフォルダを変更するには

folderRef = new Folder ("/moto/");

の/moto/の部分をフォルダのあるパスにしてください。MacOS Xだと日本語フォルダ名があると正しく動作しません。まあ、悪く言えば日本語のファイル名を含むファイルやフォルダの場合はMacOS Xでは使い物にならないのでWindowsマシンで処理してください、という事になります。その方が安全です。

次に保存先のフォルダ名は以下の行を同様に修正してください。

saveFolder = "/result/";

今回はJPEG形式のファイルのみ開いて処理していますが、これは以下の行で指定しています。

fileList = folderRef.getFiles("*.jpg");

もし、Photoshop形式であれば

fileList = folderRef.getFiles("*.psd");

となります。GIF形式であれば

fileList = folderRef.getFiles("*.gif");

になります。

次にJPEG形式で保存する際に画質を設定していますが、これは以下の行になります。

jpegOpt.quality = 12;

設定できる画質は0〜12です。これはファイルメニューからJPEG形式で保存した場合に表示されるダイアログのJPEG画質と同じです。0が一番悪い画質で12が一番良い画質になります。

調整する画像サイズですが、以下の先頭2行を変更します。最初が横幅、次が縦幅です。このピクセル数に収まるように調整されます。

wSize = 128;
hSize = 64;



[サンプルをダウンロード]