使用Photoshop脚本保存PNG文件无法正常工作

5
if (app.documents.length != 0) {
    var doc= app.activeDocument;

    for (i = 0; i < 5; i++) {
        var layer = doc.artLayers[0]
        layer.textItem.contents = i;

        var pngFile    = new File("/Users/dlokshin/temp/" + i + ".png");
        pngSaveOptions = new PNGSaveOptions();
        pngSaveOptions.interlaced = false;
        doc.saveAs(pngFile, pngSaveOptions, true, Extension.LOWERCASE);
    }
}

每当我运行上面的脚本时,它不会将文件保存为1.png、2.png、3.png等,而是打开了保存对话框并提示我输入文件名并点击保存。我做错了什么?
3个回答

10

显然,在Photoshop脚本中保存PNG文件与保存JPEG文件非常不同。以下代码适用于PNG文件:

if (app.documents.length != 0) {
    var doc= app.activeDocument;

    for (i = 0; i < 5; i++) {
        var layer = doc.artLayers[0]
        layer.textItem.contents = i;

        var opts, file;
        opts = new ExportOptionsSaveForWeb();
        opts.format = SaveDocumentType.PNG;
        opts.PNG8 = false;
        opts.quality = 100;

        pngFile = new File("/Users/dlokshin/temp/speed.png");
        app.activeDocument.exportDocument(pngFile, ExportType.SAVEFORWEB, opts);
    }
}

这对我有用 - 尽管自从我改变了实现方式以后,最显著的区别是 PNG 的保存(导出)需要很长时间。我想这是我必须接受的。 - djbp

4

如果我像这样提供保存路径,使用PNGSaveOptions进行保存对我来说是有效的:

var doc = app.activeDocument;  
var filePath = activeDocument.fullName.path;  
var pngFile = File(filePath + "/" + "myname.png");
pngSaveOptions = new PNGSaveOptions();
doc.saveAs(pngFile, pngSaveOptions, true, Extension.LOWERCASE);

我可以确认,对于PNG文件使用PNGSaveOptions非常有效。它会保存整个文件。 - eden

1

只需在开头输入以下内容

app.displayDialogs = DialogModes.NO;

而且你将不再收到对话框。


app.displayDialogs = DialogModes.NO; 隐藏了对话框,但是当对话框本应显示时,脚本执行就会停止。 - Zach Esposito

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