次のことを試みているスクリプトがあります。
- すべての画像の InDesign ドキュメントをスキャンする
BridgeTalk
オブジェクトを介してすべての画像を Photoshop に送信する- すべての画像のサイズを 600px 幅に変更します (アスペクト比を数学的に維持します)。
- Photoshop からすべての画像を新しいフォルダーにエクスポートする
1 つの画像のサイズが変更される前に Photoshop がクラッシュするため、各画像の DPI をプログラムで調整する必要があるようです。このエラーは、一時メモリがこのスクリプトによって過負荷になっていることを示唆しており、画質やサイズに関係があると思います...エラーメッセージは次のとおりです。
一般的な Photoshop エラーが発生しました。この機能は、このバージョンの Photoshop では使用できない場合があります。
行 1 のエラー:
スクラッチ ディスクがいっぱいであるため、コマンドを完了できませんでした。
画像サイズを変換する関連コードは次のとおりです。
function resaveInPS(imagePaths, imagesFolder)
{
/*
* NOTE: no single-line comments are allowed in this function, because it is not read line-by-line by BridgeTalk, but as a single String;
* only multi-line comments will work, because they are terminated at each end
*/
BridgeTalk.bringToFront("photoshop"); /* switch view from InDesign to Photoshop */
app.displayDialogs = DialogModes.NO; /* Photoshop statement, prevents status alerts from interrupting */
var imagePath = "";
var fileName = "";
var largerImage = "";
for(var i = 0; i < imagePaths.length; i++)
{
imagePath = imagePaths[i].fullName;
fileName = imagePaths[i].name;
largerImage = fileName.substr(0, fileName.length - 4); /* getting rid of the file extension: Photoshop will handle the file extension */
var photoshopDoc = "";
photoshopDoc = app.open(new File(imagePath) );
var currentWidth = photoshopDoc.width; /* in inches */
var currentHeight = photoshopDoc.height; /* in inches */
currentWidth.convert("px"); /* now in pixels */
currentHeight.convert("px"); /* now in pixels */
var newWidth = 600; /* defining the desired exported image width here */
var ratio = newWidth / currentWidth;
var newHeight = ratio * currentHeight; /* maintaining aspect ratio of the resized image's height here */
alert("The currentHeight is " + currentHeight + ".\n\nThe ratio is " + ratio + ".\n\nThe newHeight is " + newHeight + ".");
photoshopDoc.resizeImage(newHeight, newWidth); /* (height, width) */
photoshopDoc.resizeCanvas(newHeight, newWidth); /* (height, width) */
var saveOptions = new TiffSaveOptions(); /* handling the file extension here */
photoshopDoc.saveAs(new File(imagesFolder + "/" + largerImage), saveOptions); /* saving the new image in the folder here, with the file extension */
photoshopDoc.close(SaveOptions.DONOTSAVECHANGES); /* close the Photoshop document without saving */
app.purge(PurgeTarget.ALLCACHES); /* clears the clipboard, history, and undo cache in Photoshop; Note: does NOT delete the temporary files! */
} /* end of for loop */
app.displayDialogs = DialogModes.ALL; /* resume normal dialogs after saving the file and closing the document */
app.purge(PurgeTarget.ALLCACHES); /* clears the clipboard, history and undo cache in Photoshop; Note: does NOT delete the temporary files! */
} // end of function ResaveInPS
注 -エラーがまだ発生しているため、ステートメントの使用法は app.purge(PurgeTarget.ALLCACHES)
あまり効果がないようです...