1

こんにちは私は対処すべきかなり特定の問題があります。

レイヤー数が異なるPhotoshopファイルがあります。そのうちの1つに10のレイヤーがあるとしましょう。各レイヤーをエクスポートする必要はありませんが、この中で一番下のレイヤーが最初のファイルです。次に、最初と2番目のマージをエクスポートする必要があります(最初のレイヤーの上のすべてのレイヤーでブレンドモードがscreenに設定されています)、次に最初の3つがマージされ、次に4つというように続きます。

Photoshopでのスクリプトを知らないので、Googleで何も見つかりません。どんな助けでもいただければ幸いです。PhotoshopCS5を使用しています

4

1 に答える 1

1

私が理解しているように、あなたはフォトショップファイルを持っています。背景はスタックの一番下にあります。次のレイヤー、それをレイヤー1、次にレイヤー2などと呼びましょう。レイヤー1と2をマージしてエクスポートする必要があります。次に、レイヤー1、2、3をマージしてエクスポートする必要があります。背景をそれらとマージする必要があるかどうかについては言及していません。とにかく、私はレイヤーを背景とマージする必要があるという仮定に取り組んでいます-そうでない場合は、簡単に変更できます。これがあなたが望むことを望むスクリプトです:

app.preferences.rulerUnits = Units.PIXELS;

// call the source document
var srcDoc = app.activeDocument;
fileName = app.activeDocument.name;
var myDocName = fileName.substring(0,fileName.length -4)
var numOfLayers = srcDoc.layers.length;

hideEverything(srcDoc)
processLayers (srcDoc)

function processLayers (sourceDocument)
{
  for (var i = numOfLayers -1; i >= 0  ; i--)
  {
  srcDoc.activeLayer = srcDoc.artLayers[i];

  thisLayer = srcDoc.artLayers[i].name;

  // duplicate the document
  var id17396 = charIDToTypeID( "Dplc" );
  var desc3299 = new ActionDescriptor();
  var id17397 = charIDToTypeID( "null" );
  var ref2177 = new ActionReference();
  var id17398 = charIDToTypeID( "Dcmn" );
  var id17399 = charIDToTypeID( "Ordn" );
  var id17400 = charIDToTypeID( "Frst" );
  ref2177.putEnumerated( id17398, id17399, id17400 );
  desc3299.putReference( id17397, ref2177 );
  var id17401 = charIDToTypeID( "Nm  " );
  desc3299.putString( id17401, thisLayer ); //change the name of the document
  executeAction( id17396, desc3299, DialogModes.NO );

  // Flatten the image
  app.activeDocument.flatten();

  // Set myFilePath and fileName to source path
  myFilePath = srcDoc.path + '/' + app.activeDocument.name +'.png';

  try
  {
    // save out the image
    var pngFile = new File(myFilePath);
    pngSaveOptions = new PNGSaveOptions();
    pngSaveOptions.embedColorProfile = true;
    pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
    pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;

    activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
  }
  catch(e)
  {
    alert(e)
  }
  // close that saved png
  app.activeDocument.close()

  // select the document that's been open the longest
  app.activeDocument = srcDoc;
  }
}

function hideEverything(sourceDocument)
{
  for (var i = numOfLayers -2; i >= 0  ; i--) // don't include background
  {
    srcDoc.artLayers[i].visible = false;
  }
}
于 2012-11-20T17:22:58.847 に答える