ブログに写真をアップする際に一枚ずつ手動でリサイズするのが手間だったので、
スクリプトで自動化することにしました。
使用するソフトはPhotoshopで、
プログラムはPhotoShop用のJavascriptのJSXを使用しました。
スクリプトの処理の流れとしては、
———————————————————————
元画像をコピーしてリサイズする用の画像を作成
↓
画像の比率が縦長か横長調べる
↓
横長の場合は横幅を1500ピクセルに、
縦長の場合は横幅を1000ピクセルに変更(縦横比は維持)
↓
ファイル名を変更しつつ、指定されたパスにJpegで保存
↓
ファイルを閉じる
———————————————————————
といった感じです。
実際のスクリプトは以下のようになります。
//sabaten.com //PhotoShop用JSX // //画像のサイズを縦横比を維持したままで、 //横画面の場合幅を1500ピクセルに、縦画面の場合幅1000ピクセルに調整して保存 //====初期化==== var widthPortrait=1000; //横画面の変更後の幅解像度 var widthLandscape=1500; // 縦画面の変更後の幅解像度 var jpegQuality=12; //JPEG出力時のクオリティ(0~12) var outPutPath="/c/output/"; //任意の出力パス var saveRulerUnits=preferences.rulerUnits; //単位の保存 preferences.rulerUnits=Units.PIXELS; //単位をピクセルに //====開いている画像の取得==== var baseFile=activeDocument; //現在アクティブなドキュメントを取得 var baseName=baseFile.name.split(".")[0]; //ファイル名の取得 //====保存の設定==== var saveName=baseName+"_web"; //保存ファイル名の設定 var saveFile=new File(outPutPath+saveName); //保存パス+保存ファイル名 //====画像のコピー==== var x=baseFile.width; //ベースファイルの横幅を取得 var y=baseFile.height; //ベースファイルの高さを取得 baseFile.selection.selectAll(); //全選択 baseFile.selection.copy(); //選択範囲のコピー //====新規ドキュメントに貼り付け==== var newFile=documents.add(x,y,baseFile.resolution,"New File"); //新規ファイルの作成 newFile.paste(); //貼り付け newFile.flatten(); //レイヤー結合 //====新規サイズの計算==== var newW=0; //新規横幅サイズ初期化 var newH=0; //新規高さサイズ初期化 if(x>y){ //画像の横が縦より長かったら横解像度1500 newW=widthLandscape; newH=y*(widthLandscape/x); }else{ //画像の縦が横より長かったら横解像度1000 newW=widthPortrait; newH=y*(widthPortrait/x); } //====サイズの変更==== newFile.resizeImage(newW,newH,newFile.resolution,ResampleMethod.BICUBIC); //====JPEGで保存==== var jpegSaveOpt=new JPEGSaveOptions(); //JPEG保存設定 jpegSaveOpt.quality=jpegQuality; //JPEGクオリティ jpegSaveOpt.embedColorProfile=false; jpegSaveOpt.formatOptions=FormatOptions.OPTIMIZEDBASELINE; newFile.saveAs(saveFile,jpegSaveOpt,true,Extension.LOWERCASE); //====新規ドキュメントを閉じる==== newFile.close(SaveOptions.DONOTSAVECHANGES); newFile=null; //====元ファイルを閉じる==== baseFile.close(SaveOptions.DONOTSAVECHANGES); baseFile=null; preferences.rulerUnits=saveRulerUnits; //単位を元に戻す
この場合は幅の解像度が1500と1000の固定ですが、変更後の解像度の変数を変えれば、別のサイズで保存できます。
計算式を変えて縦の解像度を指定したり、解像度で処理を分岐したり出来そうですね。
あとは、JSXをドロップレット化して、インプット用のフォルダを指定したバッチで起動すればアウトプット用のフォルダにリサイズされた画像がどんどこ入っていきます。
PhotoShop用のスクリプトを初めて作ってみたのですが、リサイズがほんとに楽になりました。
写真に写った顔のぼかしは手動でやっていますが、リサイズの手間と比べるとたいした事ないですね。
他にも単純作業を効率化出来そうなことがあればスクリプトを考えていきたいですね。
ではでは、画像のリサイズ用のスクリプトについての記事でした。