About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Oct

    2

    #target photoshop
    app.bringToFront();
    //运行批处理尺寸
    main() ;
    function main() 
    {
         if(app.documents.length == 0)
        {
            //如果还没有打开任何文件,就先选择一个文件打开
            var fileInRef = File.openDialog ("请先打一个PSD文件",  "*.psd",  false);
             
            if(!fileInRef)
            {  
                //未选择就中止
                return;
            }
        
            //打开图像文件
            var activeDoc = app.open(fileInRef);
        }
        else
        {
            var activeDoc  = app.activeDocument;
        }
        var activeDocParent = activeDoc.path;//被激活文件的父级目录
        //激活文件的图层组
        var layers = activeDoc.layers;
        for(var i = 0; i < layers.length; i++)
        {
             var layer = layers[i];
                   layer.visible = false;//图层设为不可见
        }
        for (var i = 0; i<layers.length; i++) 
        {
            var layer = layers[i];
            
                layer.visible = true;
            //与PSD源文件相同的路径
            var saveFile = new File(activeDocParent+"/" + (layers.length - (i+1)) +".jpg");
            //输出到指定文件夹
            if (saveFile.exists) 
            {
                saveFile.remove();
            }
                //以JPG格式保存
            var jpgSaveOptions = new ExportOptionsSaveForWeb();
                jpgSaveOptions.format = SaveDocumentType.JPEG;//JPG / JPEG 格式
                jpgSaveOptions.optimized = true;//保存时使用优化选项
                jpgSaveOptions.includeProfile = false ;
                jpgSaveOptions.quality = 80 ;//保存质量
                 
            activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, jpgSaveOptions);
            layer.visible = false;

        }
    }

    Apr

    28

    这是《iOS APP 启动画面 / 闪屏 PS 尺寸图批量生成脚本》的升级版本,因为它不仅仅只是建立尺寸和命名闪屏图像的文件名,它还能自动按闪屏的尺寸建立图标(也会按闪屏的不同方向自动旋转图标),并自动保存所有图像

    点击查看详情

    More...

    Apr

    21

    这个脚本可以分割像素(连续的)到单独的图层。对类似 Bitmap Font Generator 生成后的字体对单个字符进行样式设计时很有用。

    下载地址:SplitToLayers1_0.zip

    Apr

    4

    推荐安装完整版本的 Photoshop 后,再安装对应版本的 Adobe Extendscript Toolkit(比如 PS CC 对应的是 Extendscript Toolkit CC 版本,使用它的好处是调试更方便)。如果安装的是绿色版或精减版的 PS,把 js 代码复制到纯文本文件,然后改后缀名为 *.js 或 *.jsx ,然后在 PS 中“文件——脚本——浏览”,然后执行脚本文件。

    本博客中所有 “Photoshop! WOW” 分类贴子中的脚本, 如果没有特别说明版本都是指 PS CS6 以上的版本(不保证在 PS CS6 以下的版本中能运行).

    Mar

    22

    iOS APP 开发时启动画面(有些人称它为“闪屏”)名称和尺寸多的实在让人记不住。每出一个新设备就要添加一个对应的新名称和尺寸,这也太蛋疼了。苹果公司就不能直接搞个大图,然后直接按比例缩放么?

    #target photoshop
    app.bringToFront();

    //所有闪屏尺寸集合
    //以下所有尺寸来 2015 年 3 月 9 日 Adobe 官方博客 
    //官方博客地址: http://blogs.adobe.com/airodynamics/2015/03/09/launch-images-on-ios-with-adobe-air/
    var docNames = [
            //图像都使用 Default 开头

            //5s 之前的手机设备,没有方向修饰词,屏幕都是竖的
            //如果做横向的闪屏,可以将显示的图案旋转90度

            //加个默认图像,万一遇上个 iPhone3GS 渣机用户,或其它意外情况
            ["Default.png""320*480"],

            //设备名称 ~iphone 其实是可以省略的,默认就是 ~iphone。
            //如果是ipad它会通过方向修饰词去判断的,为了严禁起见,还是加上吧。
            ["Default~iphone.png""640*960"]//iPhone4 非 Retina屏
            ["Default@2x~iphone.png""640*960"]//iPhone4 、4s Retina屏
            ["Default-568h@2x~iphone.png""640*1136"],//iPhone 5,5c,5s

            ["Default-375w-667h@2x~iphone.png""750*1334"]//iPhone6 竖向                          
            ["Default-414w-736h@3x~iphone.png""1242*2208"],//iPhone6 plus 竖向

            ["Default-Landscape-414w-736h@3x~iphone.png""2208*1242"],//iPhone6 plus,已经可以加横向修饰词
                                                                       //由此可见 iPhone6 Plus 是手机和平板设备的综合体

            //iPad 平板设备有方向修饰词,因为只有平板有方向修饰词,所以可以省略设备修词
            //比如将 Default-Landscape~ipad.png 写成 Default-Landscape.png。
            //上面的 iPhone6 Plus 也一样,有方向修饰词,所以它也属于一种平板设备,虽然它写的是 ~iphone
            //但所有设修饰词无论是 ~iphone 还是~ipad 都是可以省略的
            ["Default-Portrait~ipad.png""768*1024"],//iPad 1 、iPad 2 等旧设备,正方向的
            ["Default-Landscape~ipad.png""1024*768"],//iPad 1 、iPad 2 等旧设备,左横方向
            ["Default-Portrait@2x~ipad.png""1536*2048"],//iPad 3, iPad Air 等新设备,正方向
            ["Default-Landscape@2x~ipad.png""2048*1536"]//iPad 3, iPad Air 等新设备,左横方向

            //我这里没有放设备倒转时的方向与右横方向,也就是带有 PortraitUpsideDown 与 LandscapeRight 修饰词的图片
            //因为我用不上,因为游戏 APP方向一般都是固定的,要不是是竖的,要不就是横的。
            //如果对倒的和右横方向有需要,请按 Adobe 官方博客网页中的名称添加
          ];
    run();
    function run()
    {
        var docs = app.documents;
        for (var i =0; i < docNames.length; i++)
        {
           var size = docNames[i][1].split("*");        
           docs.add(
                          UnitValue(size[0],"px")//宽
                          UnitValue(size[1],"px")//高
                          72//分辨率
                          docNames[i][0]//名称
                          NewDocumentMode.RGB, //颜色模式
                          DocumentFill.BACKGROUNDCOLOR, //使用背景色初始化文档
                          1//像素的宽高比
                          );
        }
    }

    Mar

    7

    主要是用来移动开发时,iOS 与安卓都有大量不同的尺寸图标需要生成,而这个脚本就是用来将一张宽与高相等的大图,批量生成 ICON 不同尺寸的图标。

    将以下脚本保存到一个单独的纯文本文件中,后缀名改为 *.jsx,然后在 PS CS6或 PS CC 2014 新版中通过“文件”菜单—“脚本”—“浏览”运行。如果有参数要改,请直接看注释,反正已经写的很清楚了:

    #target photoshop
    app.bringToFront();

    //尺寸集合
    var sizeList = [1024,512,192,180,152,144,128,120,114,100,96,87,80,76,75,72,66,60,58,57,50,48,44,40,36,32,29,16];

    //任意一个宽与高相等的图像,尺寸大于1024x1024像素。
    var fileRef = File.openDialog ("请选择一个文件""*.png", false);

    //也可以在这里直接定义一个输出文件夹,Folder.selectDialog("然后选择一个输出文件夹");
    //我这里直接使用被选择图片的相同目录
    var outputFolder = fileRef.parent;

    //打开文件
    var activeDocument = app.open(fileRef);

    //运行批处理尺寸
    runNow() ;

    function runNow() 
    {
         if(activeDocument.height != activeDocument.width)
         {
             alert("当前文件宽高尺寸不一致,脚本已中止。");
             return;
         }

         if(activeDocument.height < 1024)
         {  
             alert("选择的原始图像尺寸必须大于等于1024x1024像素。");
             return;
          }


         for(var i = 0; i < sizeList.length; i ++)
         {
             //重置图像尺寸
             activeDocument.resizeImage(UnitValue(sizeList[i],"px"),UnitValue(sizeList[i],"px"),null,ResampleMethod.BICUBIC);

             //图像无论是放大还是缩小,都会变模糊,只是放大时模糊的快一些,缩小时模糊的慢一些
             //所以这里复制一个图像进行锐化,可以让缩小后的图像清晰一点。
             var duplicateLayer = activeDocument.activeLayer.duplicate();

             activeDocument.activeLayer = duplicateLayer;

             duplicateLayer.applySharpen();//应用锐化
             duplicateLayer.opacity = 40;

             activeDocument.flatten();//合并图层

             //保存的文件
             var saveFile = new File(outputFolder + "/" + sizeList[i] +".png")

             //如果文件已经存在就先删除它
              if (saveFile.exists)
              {
                    saveFile.remove();
              }

             //以PNG格式保存,带压缩
             var pngSaveOptions = new ExportOptionsSaveForWeb();
             pngSaveOptions.format = SaveDocumentType.PNG;
             pngSaveOptions.transparency = true;
             pngSaveOptions.includeProfile = false ;
             pngSaveOptions.interlaced = false ;
             pngSaveOptions.PNG8= false ;

             activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, pngSaveOptions);

             activeDocument.activeHistoryState = activeDocument.historyStates[0];//还原到打开状态
         }     
         activeDocument.close(SaveOptions.DONOTSAVECHANGES);//原始被打开的文件不保存,关闭源文件
    }

    备注:之所以用脚本的方式是因为修改起来比较方便,它不需要某个开发环境,修改完了之后再需要重新编译、安装再使用等烦人操作。

    Nov

    8

    八个滤镜包括:
    1、Alien.Skin.xenofex2
    2、Eye Candy 5 Textures
    3、Eye Candy 4000
    4、NikColorEfex3 
    5、抽出滤镜
    6、灯光工厂3.0
    7、然烧的梨树
    8、人像磨皮滤镜2.3
     
    安装方法
    直接解压路径Adobe Photoshop CS6\Plug-ins\Panels,重起Photoshop即可使用。

    More...

    Aug

    2

    以下脚本可以在 Adobe CS5 以上版的 ExtendScript Toolkit 中运行(低版本的 PS 未作测试,本人使用编码与测试环境是 PS CS6,以下脚本全部参考 Photoshop JS CS5 API 手册)。如果安装的是绿色版 PS CS5 以上版本,可以将以下代码全部复制,保存到一个 *.txt 文本文件,然后将 .txt 后缀名改为 .js 或 .jsx。然后启动 PS CS5 或 CS6,选择菜单“文件——脚本——浏览”,然后选中脚本文件运行即可。

    #target photoshop
    app.bringToFront();
    app.displayDialogs = DialogModes.NO;

    var fileRef = File.openDialog ("请选择一个文件""*.pdf", false);
    var outputFolder = Folder.selectDialog("然后选择一个输出文件夹");

    var pdfOpenOptions = new PDFOpenOptions ;
        pdfOpenOptions.antiAlias = true ;
        pdfOpenOptions.mode = OpenDocumentMode.RGB ;
        pdfOpenOptions.resolution = 72;//分辨率
        pdfOpenOptions.cropPage = CropToType.BLEEDBOX;//裁切到出血框
        pdfOpenOptions.bitsPerChannel = BitsPerChannelType.THIRTYTWO;

    main();

    function main(){

        try{
            for(var i = 1; true; i++){//PDF页面索引是从1开始的,不是0
                pdfOpenOptions.page = i;
                runNow();
            }
        }catch(err){
             alert(err.description, "错误警告");
             return;
        }
    }

    function runNow(){

            var activeDocument = app.open(fileRef, pdfOpenOptions,);
            var duplicateLayer = activeDocument.activeLayer.duplicate();
            duplicateLayer.opacity = 50;
            activeDocument.flatten();

            var saveFile = new File(outputFolder + "/" + activeDocument.name +".png")
            //以PNG格式保存
            //var pngSaveOptions = new PNGSaveOptions();
            //activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE);

            //以JPG格式保存        
            var jpgSaveOptions = new JPEGSaveOptions();
                jpgSaveOptions.embedColorProfile = true;
                jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
                jpgSaveOptions.matte = MatteType.NONE;
                jpgSaveOptions.quality = 10//1-12

            activeDocument.saveAs(saveFile, jpgSaveOptions, true, Extension.LOWERCASE);//保存JPG图片
            activeDocument.close(SaveOptions.DONOTSAVECHANGES);//不保存文档关闭
    }

    备注:如果需要自定义脚本,在线 API 手册打开很慢或打不开,可以点击这里下载离线版本手册(CHM 格式)

    Aug

    1

    PSD 图层批量保存为 PNG 格式

    • 1 Comments
    • Photoshop! WOW

    帮同事写的批量将 PSD 文件的图层导出保存为 PNG 格式,一般懂点 JS 的人应该都可以看的懂吧?我和同事用的都是 Photoshop CS6 版本,所以我是直接在 Adobe Extendscript Toolkit CS6 中编写的代码和执行的。如果是绿色版本的 CS6 ,也可以通过新建一个 *.js 或 *.jsx 文件后,以文本的方式复制以下代码,然后通过 PS CS6 的“文件——脚本——浏览”,然后执行脚本文件(注:低版本的 PS 中我没有试过,可能需要 CS5 以上的版本才能运行,因为我查看的官方帮助手册是 CS5 版本)。

    #target photoshop
    app.bringToFront();

    //有用的参数集
    //app.documents.length 
    //app.activeDocument.activeLayer;

    var inputFolder = Folder.selectDialog("先选择一个输入文件夹");
    //var outputFolder = Folder.selectDialog("然后选择一个输出文件夹");

    var fileList = inputFolder.getFiles();
    for (var i = 0; i<fileList.length; i++) {

        if (fileList[i] instanceof File && !fileList[i].hidden && checkPSDFile(fileList[i])) {

            open(fileList[i]);
            runNow();
        }
    }

    function checkPSDFile(inFileName) {

        var lastDot = inFileName.toString().lastIndexOf(".");

        if (lastDot == -1) {
            return false;
        }

        var extension = inFileName.toString().substr(lastDot+1);
        extension = extension.toLowerCase();

        if (extension == "psd") {
            return true;
        }
        return false;
    }

    function runNow() {

        if (documents.length == 0) {

            alert("没有可处理的文档");

        } else {
            if (activeDocument.mode != DocumentMode.RGB) {
                //如果要保存为PNG格式,必须先将文档颜色模式改变RGB
                app.activeDocument.changeMode(ChangeMode.RGB);
            }
            var name = app.activeDocument.name;

            var lastDot = name.lastIndexOf(".");

            if (lastDot>-1) {
                name = name.substr(0, lastDot);// 默认的文件名,除去文件psd后缀的名称
            }
            var layers = activeDocument.layers;

            for (var i = 0, j = 0; i<layers.length; i++) {
                var layer = layers[i];
                layer.name = i;
                layer.visible = false;
            }
            for (var i = 0; i<layers.length; i++) {
                var layer = layers[i];
                layer.visible = true;

                //与PSD源文件相同的路径
                var path = activeDocument.path;
                var saveFile = new File(path+"/"+name+"_"+layer.name+".png");

                //输出到指定文件夹
                //var saveFile = new File(outputFolder + "/" + name + "_" + layer.name +".png"); 
                if (saveFile.exists) {
                    saveFile.remove();
                }

                var pngSaveOptions = new PNGSaveOptions();
                activeDocument.saveAs(saveFile,pngSaveOptions,true,Extension.LOWERCASE);

                layer.visible = false;
            }
            activeDocument.close(SaveOptions.SAVECHANGES);//保存并关闭源文件
            // activeDocument.close(SaveOptions.DONOTSAVECHANGES);//不保存关闭源文件
        }
    }

    Aug

    10

    上一篇“photoshop 图层批量重命名功能(支持批量文件处理,CS2版本以上有效)”里的方法,它只适合photoshop cs2以上的版本的脚本。如果有很多人像我一样,平时只用cs版本怎么办?或者有些人还在用ps 7.0或6.0(当然,这种人可能很少了)。

    很多人可能用习惯了photoshop的动作命令,可能并不了解ImageReady的动作命令,可以说ImageReady的命令功能是强于photoshop的作动命令功能的。可惜ImageReady这个软件从photoshop cs3版本开始没有了。

    photoshop的作动命令文件后缀是“.atn”的,ImageReady的动作命令后缀是“.isa”的,这个先不要搞错了。那ImageReady的动作脚本和photoshop的动作脚本相比,它强在哪里呢,在这个对图层重命名的过程中就体现出来了。即“插入条件”,可能在任何教程书中都没有介绍过关于这个命令的实例,很多书其实连ImageReady都很少提到,就算提到了也是在讲动画或网页相关的东西,并不会去解释ImageReady中关于动作中有“条件”这个东西,即使使用搜索引擎,也只能搜索到ImageReady自带的帮助文件中才有关它的解释。因为一般搞设计的人很少会去用到这个功能,因为这个功能偏向于一些编程语言里的if语句是一样的。

    如果对它的“条件”有兴趣,可以自己去看一下帮助说明;当然如果对它的功能没兴趣,仅仅只是为了改图层的名字,那就不要去学它的使用方法了,只要下载本人这里已经做好的动作文件就可以了。(下载文件在文章末尾)下载以后,用记事本打开它,使用搜索或替换功能将“http://zinewow.cn”替换成为你自己想要改的英文字母。注意,用记事本修改的方式只能改英文名字,不能改中文名字,中文名字需要用“转义字符”才可以。一般转义字符也不可能一个一个的去查,所以如果要用中文字符的话,建义将文件中的第一步动作删除,然后重新录制一下重命名的步骤即可。

    注意:这里替换时有二处的,第一处是修改后名字,step1.newLayerName = "http://zinewow.cn";第二处是判断处的名字step3.compareStringValue = "http://zinewow.cn";

    与上一篇批量改名使用“.jsx”文档不同的是,“.jsx”文档在使用时它会修改你部份图层的属性,比如背景图层会变成普通图层。而在使用这个方法时,它是不会修改你任何图层属性的,仅仅是改名而以。不过它也有缺点,缺点就是没有像“.jsx”那么自由,可以按序顺命名。也就是说它虽然有条件功能,但并没有计算功能;另外它只能对当前打开的文档才能批处理重命名图层,所以并不能像“.jsx”那样支持批量文件。

    More...