首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Photoshop通过合并下一层将图层导出为PNG格式

Photoshop通过合并下一层将图层导出为PNG格式
EN

Stack Overflow用户
提问于 2012-11-20 18:12:00
回答 1查看 968关注 0票数 1

嗨,我有一个非常具体的问题要解决。

我有不同层数的Photoshop文件。假设其中一个有10层,不需要导出每一层,但在这里,最底层的层是第一个文件。然后我需要导出第一个和第二个合并的图层(第一个上面的所有层都有一个混合模式设置为screen),接下来是前三个合并,然后是四个,依此类推。

我不知道在Photoshop中编写脚本,在Google中也找不到任何东西。任何帮助都将不胜感激。我使用Photoshop CS5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-21 01:22:59

据我所知,你有一个photoshop文件。背景位于堆栈的底部。下一层,让我们称之为layer 1,然后layer 2等等。layer 1和layer 2需要合并并导出。然后需要合并和导出图层1、2和3。你没有提到背景是否需要与它们合并。无论如何,我的工作是假设图层需要与背景合并-如果不是这样,很容易更改。这是一个你想要的脚本:

代码语言:javascript
运行
复制
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;
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13470920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档