JavaScript调整不同尺寸的图像,仅宽度起作用

6
我正在尝试为Photoshop创建一个脚本,用于按不同的宽度调整打开的图像大小。目标是在每次调整大小后,将图像恢复到原始状态并运行不同的宽度。有一些在线脚本几乎可以做到这一点,但我只得到错误。我得到的错误是“未定义的对象”。
我目前有以下脚本,但我卡住了:

// get a reference to the current (active) document and store it in a variable named "doc"
doc = app.activeDocument;


// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 940;


// our web export optionsvar options = new ExportOptionsSaveForWeb();

function SaveJPEG(saveFile, quality) {
  var exportOptionsSaveForWeb = new ExportOptionsSaveForWeb();
  exportOptionsSaveForWeb.format = SaveDocumentType.JPEG;
  exportOptionsSaveForWeb.includeProfile = false;
  exportOptionsSaveForWeb.interlaced = false;
  exportOptionsSaveForWeb.optimized = true;
  exportOptionsSaveForWeb.quality = 80;


}


var newName = 'F' + doc.name + '.jpg';

doc.exportDocument(File(doc.path + '/' + newName), ExportType.SAVEFORWEB, options);

doc.activeHistoryState = doc.historyStates.index(0);

未定义的错误导致脚本在var newName行停止。需要说明的是,这是针对Photoshop CS6的。

非常感谢您的任何帮助。


似乎app.activeDocument未定义。是documents.length != 0吗?(来自Photoshop scripting: app.activeDocument is undefined - Andrew Morton
不重要,因为文档图像是以图像的形式打开的。至少这是我理解的方式,而且在这一行上我没有收到错误信息。 - user310777
doc = app.activeDocument; 进行赋值并没有问题,只是它可能会有一个 undefined 的值。因此,当你尝试获取 doc.name 时会失败,因为 undefined 没有 .name 属性。你是否检查了 documents.length - Andrew Morton
你可以使用操作和“自动化>适应图像”选项来完成这个任务,不需要脚本。但是,无论如何,如果你描述一下运行脚本的步骤,我们可能会发现错误所在。 - ElChiniNet
你不需要“恢复图像的原始状态”。复制图像,使用副本进行操作,调整大小,保存或其他操作,关闭,再次复制图像...以此类推。 - Goldmoon
1个回答

1
如果问题在于它正在破坏您的脚本,您应该尝试使用try..catch语句。
...

var newName;

try {
  newName = 'F' + doc.name + '.jpg';
} catch (e) {
  newName = 'F' + 'name-error' + '.jpg';
  console.log('doc.name is not accessible: ' + e.message;);
}

...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接