14

Photoshop CS5 Scripting Guide と Photoshop CS5 JavaScript Referenceを見てみましたが、プレーンテキストファイルにテキストを書き込む方法がわかりませんでした。それを行う方法はありますか?

bounds各レイヤー オブジェクトの値をドキュメントに記録したいと考えています。

ヒントはありますか?

4

5 に答える 5

20

これは私にとってはうまくいき、元のドキュメントと同じ名前でテキストを保存しますが、拡張子は次の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スクリプトは非常に混乱しています.うまくいくまで、見つけたいくつかのスクリプトを混ぜ合わせ続けました.

また、誰かがこれを必要とする場合は、アクティブなドキュメントをpng画像として保存するスクリプトを次に示します。

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);
}
于 2013-09-24T17:30:01.643 に答える
7

ファイル システムへのアクセスについては、Adobe のJavaScript ツール ガイド (PDF)に記載されています。

PDF ファイルをダウンロードして、「ファイル システム アクセス」セクションを確認してください。

于 2011-06-25T11:48:59.653 に答える
6

必要なものは次のとおりです。これは非常に基本的なものです。レイヤーをループし(レイヤーセットはありません!!)、レイヤー名と各レイヤーのレイヤー境界を保存します。

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();
}
于 2013-11-28T11:27:46.400 に答える
5

ドキュメントが不足していることがわかりましたが、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();
于 2013-11-27T21:21:10.843 に答える