第一个PS脚本-扩展图层变为透明最小方形

290 0

由于实习工作所需,大量图片做成方的精良不要丢失图片里面的内容,当时不怎么想用PS,因为懒得安装,就直接用电脑上的画画编辑图片,凭感觉拖拉,做个大概的方行还可以,但是拖出来的白色部分不相同,有强迫症的我做了几张就看不下去了,我就不得不去安装PS了(真香)。

安装后还是不会使用啊(0基础),到处查资料,勉强能够改为我想要的,但是一张一张太慢了,问同事怎么处理这么多的图片,最后从同事那里得到一个PS录制的动作,才发现PS可以录制动作,但是背景是白色的,我想要透明的,于是又去研究怎么录制动作,慢慢的会了,录制了一个我只的编辑的动作,其实效率已经提高了很多,但是每张图片都要手动输入宽高,还是很麻烦。

我就想要是这个动作能够自己添加判断语句就好了,但是都没找到,在百度问题的时候不知道在哪里看到了能够通过PS脚本处理图片。下图是百度记录

         

于是又开始琢磨怎么制作这个脚本,就知道和JS的语法差不多,在Adobe官网找到了开发API,但是都是英文的PDF。

没办法慢慢尝试做,实在找不到怎么开头,还是去网上找了一下代码,开始尝试修改,添加,最后勉强能够实现批量制作出白底方形,最大功劳还是resizeCanvas这个函数,但是我是想要透明背景啊,对照PS动作,就是少了一步解锁图层,但是花了很多时间去找怎么通过代码解锁图层,但是国内太少了相关的资料,通过之前找代码时找到的这个来到了他推荐的文章《谁说设计师不会写代码?超简单Photoshop脚本语言介绍》 ,在文章中找到推荐的国外的相关论坛PS-Script,最后经过很久找到了一个教学视频(很多部分都是需要付费,不推荐),看来目录讲得很多通用知识点,但是由于需要付费看了一下前面免费的又继续开始找解决方法,其中在多个网课网站搜索相关的教学都没有,后面搜索PS 的脚本开发工具名的一部分ExtendScript,一个一个网页点进去看,最终打开了一个名叫库学堂的网站,然后发现里面都是文字表述,但是分章节点很想之前那个视频网站的样子,最后发现完全一样,在这个站点看了那个视频后需要付费的部分找到了我需要方法。然后该进程序实现了我第一个觉得有些实用的PS脚本。

            

 

代码附上:

 

 


/*
    2019/3/9  11:40
*/
var seq_path = prompt("请输入图片所在文件目录:", "D:/\Xujoe/\PS脚本/\cs1", "批量导入图片到图层");
var sourceFolder = Folder(seq_path);
Folder(seq_path + "/PS");
if (sourceFolder != null) {
    // 获得文件夹下所有文件
    var fileList = sourceFolder.getFiles();
    for (var i = 0; i < fileList.length; i++) {
        if (fileList[i] instanceof File && fileList[i].hidden == false) {
            var docRef = app.open(fileList[i]); //docRef相当于 app.activeDocument
            var layername = app.activeDocument.activeLayer.name;
            $.writeln(layername);
            var layer = app.activeDocument.artLayers.getByName(layername);
            layer.fillOpacity = 100;
            var w = docRef.width;
            var h = docRef.height;
            if (w > h) {
                docRef.resizeCanvas(w, h + (w - h));
            } else {
                docRef.resizeCanvas(w + (h - w), h);
            }
            saveDoc_png(docRef);
            //这有问题 ,明明参数是不保存关闭,但是还是提醒关闭
            app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
        }
    }
}
//save document png type
function saveDoc_png(currentDoc) {
    saveFilePath = new File(currentDoc.path + '/0_' + currentDoc.name);
    SaveOptions = new PNGSaveOptions();
    currentDoc.saveAs(saveFilePath, SaveOptions, true, Extension.LOWERCASE);
}

发表评论