使用 Photoshop 脚本保存 png 不起作用

Posted

技术标签:

【中文标题】使用 Photoshop 脚本保存 png 不起作用【英文标题】:Saving a png with photoshop script not working 【发布时间】:2012-08-30 11:41:29 【问题描述】:
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 等,它会打开保存对话框并提示我输入文件名并单击保存。我做错了什么?

【问题讨论】:

【参考方案1】:

在为 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 的保存(导出)需要很长时间。我想我必须忍受的东西。【参考方案2】:

如果我为 Photoshop 提供这样的保存路径,使用 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);

【讨论】:

我可以确认使用 PNGSaveOptions 对 PNG 文件效果很好。它保存整个文件。【参考方案3】:

在开头输入这个

app.displayDialogs = DialogModes.NO;

而且你不会再看到对话框了。

【讨论】:

app.displayDialogs = DialogModes.NO; 隐藏对话框,但脚本执行会在对话框显示时停止

以上是关于使用 Photoshop 脚本保存 png 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

用于更改文本编号并使用变量保存的 Photoshop 操作

从 Photoshop 动作到 Photoshop 脚本?

Photoshop保存png24怎么把质量改小?

保存后获取与PHAsset相同的NSData

photoshop 24位 png或jpg图 啥意思

Adobe Photoshop CS6+blend4 获取png图片data数据