zoukankan      html  css  js  c++  java
  • photoshop 批量处理图片的大小的脚本

     function shui(){ //水印处理函数
        if (!win.group.shuiSet.other.open.e.text) {
            alert("您没有选择水印文件");
        }else{
                var shuiFlie = File(win.group.shuiSet.other.open.e.text);
                docShui= open(shuiFlie);
                docShui.changeMode(ChangeMode.RGB);
                if (docShui.layers.length>1) docShui.mergeVisibleLayers(); //合并可见层
                var shuiLayer = docShui.activeLayer;
                
                if (parseInt(shuiLayer.bounds.toString().replace(/\D/g,"")) == 0) {
                    docShui.close(SaveOptions.DONOTSAVECHANGES);
                    if(confirm("水印文件内容为空,继续操作将不会添加任何水印")) go(false);//继续操作,只是不添加水印        
                }else{
                    //拷贝水印
                    var suo=Number(win.group.shuiSet.other.hun.e.text);
                    if (!suo) suo=1; //容错
                    if (suo<0) suo=1;
                    docShui.resizeImage(docShui.width*suo,docShui.height*suo,PRESOLUTION, ResampleMethod.BICUBIC); //变换水印大小
                    var sW=Number(shuiLayer.bounds[2]-shuiLayer.bounds[0]);
                    var sH=Number(shuiLayer.bounds[3]-shuiLayer.bounds[1]);
                    docShui.selection.selectAll();
                    docShui.selection.copy();
                    docShui.close(SaveOptions.DONOTSAVECHANGES);                
                    //新建文档定义水印为图案
                    if (win.group.shui.g.fill.value){
                        var newDR = app.documents.add(Number(win.group.shuiSet.other.dis.e1.text)+sW, Number(win.group.shuiSet.other.dis.e2.text)+sH, 72, "ShuiTu", NewDocumentMode.RGB, DocumentFill.TRANSPARENT);
                        newDR.paste();
                        newDR.selection.selectAll();
                        setPattern("BlueIdea-Script-Watermark-"+nowTime.toString());
                        newDR.close(SaveOptions.DONOTSAVECHANGES);                    
                        newDR= null;
                        }
                    go(true,sW,sH);
                }
        }
    }
    function pasteShui(nWidth,nHeight,moveX,moveY,sW,sH,sHun){ //粘贴水印及偏移or 填充
        app.activeDocument.changeMode(ChangeMode.RGB);
        if(win.group.shui.g.one.value){
                    switch (true) {
                        case (allp.po1.c1.value||allp.po2.c4.value||allp.po3.c7.value):
                            NowMX=moveX-nWidth/2+sW/2;
                            break;
                        case (allp.po1.c2.value||allp.po2.c5.value||allp.po3.c8.value):
                            NowMX=moveX;
                            break;
                        case (allp.po1.c3.value||allp.po2.c6.value||allp.po3.c9.value):
                            NowMX=nWidth/2-moveX-sW/2;
                            break;
                        default :
                            NowMX=0;
                    }
                    switch (true) {
                        case (allp.po1.c1.value||allp.po1.c2.value||allp.po1.c3.value):
                            NowMY=moveY-nHeight/2+sH/2;
                            break;
                        case (allp.po2.c4.value||allp.po2.c5.value||allp.po2.c6.value):
                            NowMY=moveY;
                            break;
                        case (allp.po3.c7.value||allp.po3.c8.value||allp.po3.c9.value):
                            NowMY=nHeight/2-moveY-sH/2;
                            break;
                        default :
                            NowMY=0;
                    }                 
                    app.activeDocument.paste();
                    app.activeDocument.activeLayer.translate (NowMX,NowMY);
        }else{
                app.activeDocument.artLayers.add();
                app.activeDocument.selection.selectAll();
                fillPattern("BlueIdea-Script-Watermark-"+nowTime.toString(),"id",100);
        }
        app.activeDocument.activeLayer.blendMode =eval("BlendMode."+sHun);
    }
    function save(docRef) {    //储存函数
            if (win.group.other.c.value){ //判断是否另存
                var don=win.group.otherSet.Quality;
                var inEmbedICC=win.group.otherSet.icc.value;
                var saveOptions;
                switch (saveType) {
                    case "jpeg" :
                                docRef.flatten() ;//合并图层,以储存jpg                            
                                docRef.changeMode(ChangeMode.RGB); // 更改为rgb模式,避免其它模式无法储存
                                docRef.bitsPerChannel = BitsPerChannelType.EIGHT;
                                saveOptions = new JPEGSaveOptions();
                                saveOptions.quality = don.d.selection.index; //获取压缩质量
                                if (don.c.value) {
                                    docRef.convertProfile("sRGB IEC61966-2.1", Intent.RELATIVECOLORIMETRIC, true, true);
                                    }
                                saveOptions.embedColorProfile = inEmbedICC;
                                var typeName="jpg"; //定义后缀
                                break;
                    case "gif" :
                                if (docRef.artLayers.length>1)docRef.mergeVisibleLayers(); //合并可见层
                                docRef.changeMode(ChangeMode.RGB);
                                saveOptions = new GIFSaveOptions();
                                saveOptions.colors = Math.pow(2,don.d.selection.index+1);
                                if (don.c.value){
                                    saveOptions.dither = Dither.DIFFUSION; //扩散仿色        
                                    }else{
                                    saveOptions.dither = Dither.NONE;    
                                    } ;
                                if (don.c2.value) {
                                    saveOptions.transparency=1;
                                    }else{
                                    saveOptions.transparency=0;
                                    };
                                //saveOptions.matte = MatteType.NONE; //杂边无,否则为白色
                                saveOptions.interlaced = 0; //不交错
                                var typeName="gif";
                                break;
                    case "psd" :
                                saveOptions = new PhotoshopSaveOptions();
                                saveOptions.embedColorProfile = inEmbedICC;                            
                                var typeName="psd";
                                break;
                    case "tiff" :
                                docRef.flatten() ;    
                                saveOptions = new TiffSaveOptions();
                                saveOptions.embedColorProfile = inEmbedICC;
                                if (don.c.value) {
                                    saveOptions.imageCompression = TIFFEncoding.TIFFLZW;
                                } else {
                                    saveOptions.imageCompression = TIFFEncoding.NONE;
                                }
                                var typeName="tif";    
                                break;
                    default :
                                alert ("-_-!!! SaveType");
                    }
                
                    // 获取另存文件夹及前后追加字段
                    var headWord = win.group.otherSet.head.e.text;
                    var footWord = win.group.otherSet.foot.e.text;    
                    
                    if (win.group.otherSet.otherF.c.value){ //如果选中另存至文件夹
                                if (win.group.otherSet.folderS.s.text){
                                    var saveFolder = win.group.otherSet.folderS.s.text+"/";    
                                }else{    
                                    var saveFolder = docRef.path+"/newsize_";  //容错,避免没有具体选择另存到那个文件夹
                                }
                    }else{
                                if (headWord || footWord){
                                    var saveFolder = docRef.path+"/";
                                }else{
                                    var saveFolder = docRef.path+"/newsize_"; //容错,避免没有添加前后缀而保存在本文件夹
                                }
                    }
                    if (docRef.name.lastIndexOf('.')==-1){  //根据原文件名有否后缀,判断是否去掉后缀
                            var oldname=docRef.name;
                        }else{
                            var oldname=docRef.name.substring(0,docRef.name.lastIndexOf('.'));
                        }
                    
                docRef.saveAs(new File(saveFolder + headWord + oldname + footWord + "."+ typeName),saveOptions, true,Extension.LOWERCASE);    //设定输出文件名称            
            }else{
                docRef.save();
            }
            docRef.close(SaveOptions.DONOTSAVECHANGES); //关闭当前文档    
    }
    function go(shuiOK,sW,sH) { //最后循环处理及关闭
            var x=Number(win.group.corrdination.x.e.text);
            var y=Number(win.group.corrdination.y.e.text);
            var a=win.group.a.c.value;
            var b=win.group.b.c.value; //选中则不颠倒横竖,以输入值为准    
        
            if (saveType=="psd"){ //变更首选项
            var rememberMaximize = app.preferences.maximizeCompatibility; //psd格式最大兼容 原始选项 --记录
            var needMaximize = win.group.otherSet.Quality.c.value? QueryStateType.ALWAYS : QueryStateType.NEVER;
                if ( app.preferences.maximizeCompatibility != needMaximize ) {
                            app.preferences.maximizeCompatibility = needMaximize;
                    }
            }        
            
            if (shuiOK){ //获取水印偏移量及混合模式
            var mdis =win.group.shuiSet.other.dis;
            var moveX=Number(mdis.e1.text),moveY=Number(mdis.e2.text);
                for (i=0;i<23;i++) {
                    if (win.group.shuiSet.other.hun.d.items[i].selected==true){
                        var sHun=sBlend[i].substring(sBlend[i].indexOf(",")+1);
                        break;
                        }
                }
            }
            
            if (!win.group.now.c.value) {  // 当前活动文档为操作对象    
                    var k=100/app.documents.length; //定义每个文件所占进度比例
                    while (app.documents.length){
                            var docRef = app.activeDocument;
                            newsize(docRef,a,b,x,y);
                            if(shuiOK) pasteShui(Number(docRef.width),Number(docRef.height),moveX,moveY,sW,sH,sHun);
                            save(docRef);
                            win.group.timeline.value =win.group.timeline.value+k;
                    }
            }else{ // 文件夹为操作对象            
                    var openFolder = Folder(win.group.folderO.s.text);                
                    var fileList = openFolder.getFiles() //获取open文件夹下所有文件
                    var k=100/fileList.length;
                    for (i=0;i<fileList.length;i++){
                        if (fileList[i] instanceof File && fileList[i].hidden == false){ //不处理隐藏文件
                            open(fileList[i]);
                            var docRef = app.activeDocument;
                            newsize(docRef,a,b,x,y);
                            if(shuiOK) pasteShui(Number(docRef.width),Number(docRef.height),moveX,moveY,sW,sH,sHun);
                            save(docRef);
                        }
                        win.group.timeline.value =win.group.timeline.value+k;
                    }
            }
        
        if ( rememberMaximize != undefined )  app.preferences.maximizeCompatibility = rememberMaximize;  //psd格式最大兼容选项还原
        app.preferences.rulerUnits = startRulerUnits;
        app.preferences.typeUnits = startTypeUnits;
        if (shuiOK && win.group.shui.g.fill.value) delPattern(); //清除图案定义
        this.parent.parent.close();
    }
    win.buttons.Btnok.onClick = function () {    
            if (win.group.shui.c.value) {
                shui(); //处理水印及最后完成
            }else{
                go(false);
            }
    }
    win.center();
    win.show();

  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2067613.html
Copyright © 2011-2022 走看看