我正在努力加快我的工作流程。我有一张食物图片,需要以不同颜色的背景导出。
现在,当我导出 jpg 时,我正在一层一层隐藏彩色背景层。但我觉得必须有一种更快的方法来做到这一点?
任何帮助或提示将不胜感激。
我正在努力加快我的工作流程。我有一张食物图片,需要以不同颜色的背景导出。
现在,当我导出 jpg 时,我正在一层一层隐藏彩色背景层。但我觉得必须有一种更快的方法来做到这一点?
任何帮助或提示将不胜感激。
假设最底层是背景层,在上面你有三个彩色背景的图像。在那些之上是你的艺术。这只是识别哪些层是哪些层并首先将它们全部关闭然后再打开的情况。
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
var n = (numOfLayers - backgrounds.length)-1;
var backgrounds = ["Red", "Yellow", "Blue"];
// switch backgrounds OFF
for (var i = n; i < numOfLayers-1; i++)
{
srcDoc.layers[i].visible = false;
}
// switch them ON one at at time
for (var i = n; i < numOfLayers-1; i++)
{
srcDoc.layers[i].visible = true;
// save
var myFileName = "C:\\temp\\my_picture_" + i + ".jpg";
save_as_jpg(myFileName);
// Switch it off again
srcDoc.layers[i].visible = false;
}
function save_as_jpg(afilepath)
{
duplicate_it();
// Flatten the jpg
activeDocument.flatten();
// jpg file options
var jpgFile = new File(afilepath);
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.formatOptions = FormatOptions.OPTIMIZEDBASELINE;
jpgSaveOptions.embedColorProfile = true;
jpgSaveOptions.matte = MatteType.NONE;
jpgSaveOptions.quality = 12;
activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE);
//close without saving
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
function duplicate_it()
{
// duplicate image into new document
var str = "temp";
var id428 = charIDToTypeID( "Dplc" );
var desc92 = new ActionDescriptor();
var id429 = charIDToTypeID( "null" );
var ref27 = new ActionReference();
var id430 = charIDToTypeID( "Dcmn" );
var id431 = charIDToTypeID( "Ordn" );
var id432 = charIDToTypeID( "Frst" );
ref27.putEnumerated( id430, id431, id432 );
desc92.putReference( id429, ref27 );
var id433 = charIDToTypeID( "Nm " );
desc92.putString( id433, str ); // name
executeAction( id428, desc92, DialogModes.NO );
}