function shui(){ //水印處理函數(shù) if (!win.group.shuiSet.other.open.e.text) { alert("您沒(méi)有選擇水印文件"); }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(); //合并可見(jiàn)層 var shuiLayer = docShui.activeLayer; if (parseInt(shuiLayer.bounds.toString().replace(/\D/g,"")) == 0) { docShui.close(SaveOptions.DONOTSAVECHANGES); if(confirm("水印文件內(nèi)容為空,繼續(xù)操作將不會(huì)添加任何水印")) go(false);//繼續(xù)操作,只是不添加水印 }else{ //拷貝水印 var suo=Number(win.group.shuiSet.other.hun.e.text); if (!suo) suo=1; //容錯(cuò) 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) { //儲(chǔ)存函數(shù) 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() ;//合并圖層,以儲(chǔ)存jpg docRef.changeMode(ChangeMode.RGB); // 更改為rgb模式,避免其它模式無(wú)法儲(chǔ)存 docRef.bitsPerChannel = BitsPerChannelType.EIGHT; saveOptions = new JPEGSaveOptions(); saveOptions.quality = don.d.selection.index; //獲取壓縮質(zhì)量 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(); //合并可見(jiàn)層 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; //擴(kuò)散仿色 }else{ saveOptions.dither = Dither.NONE; } ; if (don.c2.value) { saveOptions.transparency=1; }else{ saveOptions.transparency=0; }; //saveOptions.matte = MatteType.NONE; //雜邊無(wú),否則為白色 saveOptions.interlaced = 0; //不交錯(cuò) 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_"; //容錯(cuò),避免沒(méi)有具體選擇另存到那個(gè)文件夾 } }else{ if (headWord || footWord){ var saveFolder = docRef.path+"/"; }else{ var saveFolder = docRef.path+"/newsize_"; //容錯(cuò),避免沒(méi)有添加前后綴而保存在本文件夾 } } if (docRef.name.lastIndexOf('.')==-1){ //根據(jù)原文件名有否后綴,判斷是否去掉后綴 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); //設(shè)定輸出文件名稱 }else{ docRef.save(); } docRef.close(SaveOptions.DONOTSAVECHANGES); //關(guān)閉當(dāng)前文檔 } function go(shuiOK,sW,sH) { //最后循環(huán)處理及關(guān)閉 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; //選中則不顛倒橫豎,以輸入值為準(zhǔn) if (saveType=="psd"){ //變更首選項(xiàng) var rememberMaximize = app.preferences.maximizeCompatibility; //psd格式最大兼容 原始選項(xiàng) --記錄 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) { // 當(dāng)前活動(dòng)文檔為操作對(duì)象 var k=100/app.documents.length; //定義每個(gè)文件所占進(jìn)度比例 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{ // 文件夾為操作對(duì)象 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格式最大兼容選項(xiàng)還原 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();
本文鏈接:http://m.95time.cn/tech/graph/2008/6216.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁(yè) 批量更改圖片尺寸的ps腳本—代碼[1] 下一頁(yè)
◎進(jìn)入論壇Photoshop、Fireworks版塊參加討論,我還想發(fā)表評(píng)論。
|