我是一名开发人员,正在为Adobe Photoshop编写脚本,以便能够使用以下代码打开“另存为...”的photoshop本机窗口:
var jpgFile = new File(" ");
var jpgSaveOptions = new JPEGSaveOptions();
var doc = app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE);
此代码可在Windows 10和MacOS的所有版本的Photoshop上运行,但在MacOS上的 Photoshop版本19.1.8 除外,在此我得到以下错误:
致命错误:发生一般的Photoshop错误。此功能可能 在此版本的Photoshop中不可用。
我尝试了几件事,例如用空白字符串替换新File对象中的空间,文件的硬编码路径,但似乎无济于事。 我们非常感谢您的帮助。
答案 0 :(得分:0)
我不确定为什么在其他版本中保存一个空的File
会显示一个Save As
对话框,我希望得到同样的错误消息:/无论如何,您可以做两件事。
设置Photoshop选项以在保存文档之前始终显示对话框,然后设置默认值:
var curDialogModes = app.displayDialogs; //current displayDialogs options
app.displayDialogs = DialogModes.ALL; //explicitely show all dialogs
var jpgFile = new File(Folder.desktop + "/file.jpg");
var jpgSaveOptions = new JPEGSaveOptions();
try
{
var doc = app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE);
}
catch (e)
{
if (e.number != 8007)
//8007 is a code for "operation cancelled"
//so we only show a message if something else has happened
{
alert(e);
}
}
app.displayDialogs = curDialogModes // restoring displayDialogs back to original value
使用动作管理器代码(您可以从ScriptListener插件中获取代码)并将DialogModes.NO
更改为DialogModes.ALL
只是为了该功能-在这种情况下,您无需全局更改它,而仅针对这个动作。
function saveJPG(path)
{
var desc9 = new ActionDescriptor();
var desc10 = new ActionDescriptor();
desc10.putInteger(charIDToTypeID('EQlt'), 10);
desc10.putEnumerated(charIDToTypeID('MttC'), charIDToTypeID('MttC'), charIDToTypeID('None'));
desc9.putObject(charIDToTypeID('As '), charIDToTypeID('JPEG'), desc10);
desc9.putPath(charIDToTypeID('In '), new File(path));
desc9.putInteger(charIDToTypeID('DocI'), 400);
desc9.putBoolean(charIDToTypeID('Cpy '), true);
desc9.putEnumerated(stringIDToTypeID('saveStage'), stringIDToTypeID('saveStageType'), stringIDToTypeID('saveBegin'));
try
{
executeAction(charIDToTypeID('save'), desc9, DialogModes.ALL); // here the default DialogModes is DialogModes.NO
}
catch (e)
{
if (e.number != 8007)
//8007 is a code for "operation cancelled"
//so we only show a message if something else has happened
{
alert(e);
}
}
}
saveJPG(Folder.desktop + "/file.jpg")
请注意,在显示对话框时,取消对话框将引发错误,代码为8007,因此请使用try / catch进行处理。