Photoshop CS5 Scripting Guide and Photoshop CS5 JavaScript Referenceを見ましたが、プレーンテキストファイルにテキストを書き込む方法が見つかりませんでした。それを行う方法はありますか?Photoshop JavaScriptでテキストファイルにテキストを書き込む方法は?
各レイヤオブジェクトのbounds
の値をドキュメントに記録します。
ヒント?
Photoshop CS5 Scripting Guide and Photoshop CS5 JavaScript Referenceを見ましたが、プレーンテキストファイルにテキストを書き込む方法が見つかりませんでした。それを行う方法はありますか?Photoshop JavaScriptでテキストファイルにテキストを書き込む方法は?
各レイヤオブジェクトのbounds
の値をドキュメントに記録します。
ヒント?
ファイルシステムへのアクセスは、AdobeのJavaScript Tools Guide (PDF)で文書化されています。
PDFファイルをダウンロードし、「ファイルシステムアクセス」セクションをチェックしてください。
これは、私の作品元の文書と同じ名前でテキストを保存しますが、拡張子txt
で:
function saveTxt(txt)
{
var Name = app.activeDocument.name.replace(/\.[^\.]+$/, '');
var Ext = decodeURI(app.activeDocument.name).replace(/^.*\./,'');
if (Ext.toLowerCase() != 'psd')
return;
var Path = app.activeDocument.path;
var saveFile = File(Path + "/" + Name +".txt");
if(saveFile.exists)
saveFile.remove();
saveFile.encoding = "UTF8";
saveFile.open("e", "TEXT", "????");
saveFile.writeln(txt);
saveFile.close();
}
私はそれがどのように動作するか分からない、Photoshopのスクリプトは、私はちょうどまま、巨大な混乱でありますそれが動作するまで私が見つけたいくつかのスクリプトを一緒にミキシングします。私は欠けているドキュメントを見つけたが、作成して書き込むための方法として、この思い付いた
function savePng()
{
var Name = app.activeDocument.name.replace(/\.[^\.]+$/, '');
var Ext = decodeURI(app.activeDocument.name).replace(/^.*\./,'');
if (Ext.toLowerCase() != 'psd')
return;
var Path = app.activeDocument.path;
var saveFile = File(Path + "/" + Name +".png");
if(saveFile.exists)
saveFile.remove();
var o = new ExportOptionsSaveForWeb();
o.format = SaveDocumentType.PNG;
o.PNG8 = false;
o.transparency = true;
o.interlaced = false;
o.includeProfile = false;
activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, o);
}
:誰もがこれを必要とする場合
また、ここにもpng
画像としてアクティブなドキュメントを保存するスクリプトですCS6の新ファイル:
var s = "My string data here";
var file = new File();
var fileNew = file.saveDlg("Save new file");
fileNew.open("w");
fileNew.write(s);
fileNew.close();
はここで何が必要です: それはかなり基本的です。レイヤー(レイヤーセットはありません!!)をループし、各レイヤーのレイヤー名とレイヤー境界を保存します。
app.preferences.rulerUnits = Units.PIXELS;
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
var results = "";
var fileName = srcDoc.name;
var docName = fileName.substring(0,fileName.length -4)
var theFile = srcDoc.path + "/" + docName + ".txt";
for (var i = 0; i < numOfLayers ; i++)
{
var theLayer = srcDoc.layers[i];
var lb = getLayerBounds(theLayer).toString();
results += theLayer.name + ": " + lb + "\n";
}
writeTextFile(theFile, results)
alert(results);
function getLayerBounds(alayer)
{
var x1 = parseFloat(alayer.bounds[0])
var y1 = parseFloat(alayer.bounds[1])
var x2 = parseFloat(alayer.bounds[2])
var y2 = parseFloat(alayer.bounds[3])
return [x1,y1,x2,y2]
}
function writeTextFile(afilename, output)
{
var txtFile = new File(afilename);
txtFile.open("w"); //
txtFile.writeln(output);
txtFile.close();
}
私は、サイコbrmとcorrin_mの答えのドキュメントと最高の部分を組み合わせて読んだ。
私の回答はエラーをチェックします。
"w"で開くと既存のファイルを上書きするため、ファイルが存在する場合は削除する必要はありません。
/* =======================================================
* Saves file as text. Overwrites old file if exists.
* Returns empty string if no errors, otherwise error message.
* =======================================================*/
function saveAsTextFile(filePath, content) {
var saveFile = new File(filePath);
saveFile.encoding = "UTF8";
saveFile.open("w");
if (saveFile.error != "")
return saveFile.error;
saveFile.write(content);
if (saveFile.error != "")
return saveFile.error;
saveFile.close();
if (saveFile.error != "")
return saveFile.error;
return "";
}
これは
error = saveAsTextFile(filePath, content);
if (error === "") {
alert(filePath + " saved OK.");
}
else {
alert("Error saving " + filePath + "\n" + error);
}
がところで私はcommom-code.jsxと呼ばれる別のファイルにこれを維持していると私は行(一行次でそれを含めることができ、私のスクリプトの中で、私は機能を使用しています方法ですコメントは意図的です)。
// @include 'common-code.jsx'
ありがとう!私は/アプリケーション/ユーティリティ/アドビユーティリティ-CS5.localized/ExtendScriptのツールキットCS5/SDK – torus
ソースコードファイルは、ドキュメンテーションの何千もの価値がある見つけました。 –