【问题标题】:How to automate Photoshop?如何自动化 Photoshop?
【发布时间】:2009-04-26 06:59:02
【问题描述】:

我正在尝试在 Photoshop 中自动执行扫描/裁剪照片的过程。我需要一次扫描 3 张照片,然后使用 Photoshop 的裁剪和拉直照片命令,该命令会创建 3 张单独的图像。之后,我想将每个新创建的图像保存为 PNG。

我查看了 JSX 脚本,它们似乎很有希望。我所描述的是否可以使用 JavaScript 或 VBScript 或其他任何东西在 Photoshop 中实现自动化?

【问题讨论】:

  • 你试过谷歌吗?提示代码项目...
  • Google 从来没有发生在我身上。。请给个链接。

标签: automation photoshop extendscript


【解决方案1】:

我刚刚发现这个脚本为我完成了工作!它会自动裁剪和拉直照片并将每个结果保存到您指定的目录。

http://www.tranberry.com/photoshop/photoshop_scripting/PS4GeeksOrlando/IntroScripts/cropAndStraightenBatch.jsx

保存到本地,然后在 PS=>File=>Command=>Browse

中运行

P.S 我在评论中发现它说脚本可以通过在 Mac Finder 或 Windows 资源管理器中双击来直接执行。

Backup gist for the script here

【讨论】:

    【解决方案2】:

    我实际上在 adobe 的 Photoshop 论坛上得到了答案。事实证明,Photoshop CS4 完全可以通过 JavaScript、VBScript 编写脚本,并带有一个非常出色的开发人员 IDE,它拥有您所期望的一切(调试器、监视窗口、颜色编码等等)。我完全被打动了。

    以下是摘录供参考:

    您可以运行以下脚本,该脚本将从现有文件夹中创建一个新文件夹,并批量拆分所有命名为existingFileName#001.png 的文件并将它们放入新文件夹(已编辑)

    #target Photoshop
    app.bringToFront;
    var inFolder = Folder.selectDialog("Please select folder to process"); 
    if(inFolder != null){
        var fileList = inFolder.getFiles(/\.(jpg|tif|psd|)$/i);
        var outfolder = new Folder(decodeURI(inFolder) + "/Edited");
        if (outfolder.exists == false) outfolder.create();
        for(var a = 0 ;a < fileList.length; a++){
        if(fileList[a] instanceof File){
            var doc= open(fileList[a]);
            doc.flatten();
            var docname = fileList[a].name.slice(0,-4);
            CropStraighten();
            doc.close(SaveOptions.DONOTSAVECHANGES); 
            var count = 1;
            while(app.documents.length){
                var saveFile = new File(decodeURI(outfolder) + "/" + docname +"#"+ zeroPad(count,3) + ".png");
                SavePNG(saveFile);
                activeDocument.close(SaveOptions.DONOTSAVECHANGES) ; 
                count++;
                }
            }
        }
    };
    function CropStraighten() {
        function cTID(s) { return app.charIDToTypeID(s); };
        function sTID(s) { return app.stringIDToTypeID(s); };
        executeAction( sTID('CropPhotosAuto0001'), undefined, DialogModes.NO );
    };
    function SavePNG(saveFile){
        pngSaveOptions = new PNGSaveOptions(); 
        pngSaveOptions.embedColorProfile = true; 
        pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE; 
        pngSaveOptions.matte = MatteType.NONE; 
        pngSaveOptions.quality = 1; 
        pngSaveOptions.PNG8 = false; //24 bit PNG
        pngSaveOptions.transparency = true; 
        activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); 
    }
    
    function zeroPad(n, s) { 
        n = n.toString(); 
        while (n.length < s) n = '0' + n; 
        return n; 
    };
    

    访问 here 以获取完整帖子。

    【讨论】:

    • 我建议坚持使用 JavaScript/ExtendScript 来编写 Photoshop 脚本。不推荐使用其他语言(VBScript、AppleScript 等),并且不会为它们提供进一步的 DOM 支持。
    【解决方案3】:

    您是否尝试过使用 Photoshop Actions?我现在不关心扫描部分,但其余的都可以很容易地通过动作完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 2016-11-19
      相关资源
      最近更新 更多