10

PS-Scripting についてすべてを学ぶには十分な時間がないので、助けてもらえないかと思っていました。

とても簡単です。Top Layerの Text を変更する JS-Script が必要です。例: テキストは「#005」です。スクリプトは 1 を追加する必要があるため、「#006」と表示されます。その後、現在の番号 (006) のファイルをエクスポート (Web およびデバイス用に保存、透明度 @ 1280x720) する必要があります。

レイヤーの画面は次のとおりです(ドイツ語です!!11):imageshack.us/photo/my-images/706/helpal.png

4

1 に答える 1

16

反対票を投じた人のために編集:

コミュニティを支援し、誤解を招く/間違った情報を回避するために (この場合、私が作成した場合)、StackOverflow をより良い場所にするために、コードまたは指示が反対票を投じる価値があると思われる理由を示すコメントを以下に追加してください。間違いや誤解を招くようなことがあれば、もう 1 つ学べます。感謝します。

まず、アクションを作成する必要があります。

  1. 次のコードを.jsx拡張子を付けて保存します。
  2. あなたが持っているそれらの画像の1つを開きます
  3. 新しいアクションを作成し、まだアクティブになっていない場合は、パネルの下の記録ボタンを押します
  4. そのスクリプトに移動しFile > Scripts > Browseて選択します
  5. アクションの記録を停止する
  6. ファイルが作成されたフォルダーに移動し、その新しいファイルを削除します

次に、すべてを自動化する必要があります。開いているドキュメントがない場合、

  1. に行くFile > Automate > Batch
  2. オプションから必要な「セット」および「アクション」名を選択します
  3. [ソース] で [フォルダ] を選択したままにして、[選択...] ボタンをクリックして、階層化されたファイルを含むフォルダを選択します。
  4. (カラー設定によっては) 必要ない場合もありますが、3 番目と 4 番目のオプションを選択できます:Suppress File Open Options DialogsSuppress Color Profile Warnings. 記録時にはファイルを開くアクションを含めていないため、最初のオプションはOverride Action Open Commands選択されていません。それ以外の場合、ファイルは開かれませんが、スクリプト * ファイルの数を実行しようとします。必要に応じて 2 番目のオプションを選択しますInclude All Subfolders
  5. 「OK」ボタンをクリックします。

CS6 を使用している場合の追加ポイント: Adob​​e Developer Connectionは、…</p>

Adobe Photoshop CS6 は Scripting フォルダーをインストールしません。以下のリンクを使用して、サンプル、ドキュメント、スクリプト リスナ プラグインを手動でインストールしてください。

function getTextLayer(target) {
// this basically loops all the layers to find the
// upmost text layer with the content #nn... and returns it
    if (target == null) return false;
    var layers      = target.layers,
        layerLen    = layers.length;
    for (var i = 0; i < layerLen; i++) {
        var layer       = layers[i],
            isLayerSet  = layer.typename == 'LayerSet',
            isValid     = layer.kind == LayerKind.TEXT &&
                          /^\s*#\d+\s*$/.test(layer.textItem.contents);
            // we're allowing spaces around the text just in case
        if (!isLayerSet && !isValid) continue;
        if (isLayerSet) {
            var found = getTextLayer(layer);
            if (found) return found;
        } else return layer;
    }
    return false;
}

var doc;
try {
    doc = app.activeDocument;
    // the front document
} catch(e) {}
var txtLayer = getTextLayer(doc);
// obviously, the text layer if found

if (txtLayer) {
    var num = txtLayer.textItem.contents.match(/\d+/)[0],
    // find the numeric part
        len = num.length,
    // find the length of the numeric part
        num = (parseInt(num,10)+1).toString();
    // add 1 to that number
    while (num.length < len) num = '0' + num;
    // and adjust length if necessary so that e.g.
    // 032 will not become 33 but it will become 033
    txtLayer.textItem.contents = '#' + num;
    // update layer content
    var ext = '.png',
        dir = decodeURI(doc.path) + '/png24',
        // to use the same directory where the layered file exists
        // just keep it as decodeURI(doc.path)
        // I added a folder here, which actually does not exist
        // but it doesn't matter because I'm making it create it
        // below in case there's no such directory.
        fileName = dir + '/' + num + ext,
        i = 0;
    if (!Folder(dir).exists) Folder(dir).create();
    // create the directory if it doesn't exist
    while (File(fileName).exists)
        fileName = dir + '/' + num + '-' + (++i) + ext;
    // if file with that name exists, add -n to the end of the name
    var file = new File(fileName),
        opts = new ExportOptionsSaveForWeb();
    with (opts) {
        format = SaveDocumentType.PNG;
        PNG8 = false;
    }
    doc.exportDocument(file, ExportType.SAVEFORWEB, opts);
    // save for web
}
if (doc) {
    doc.close(SaveOptions.DONOTSAVECHANGES);
    // close the original layered document without saving
}
doc = null;
// remove reference
于 2013-01-29T05:26:25.410 に答える