fx2008

//激活Photoshop,设置为活动窗口 app.bringToFront();

var PRESOLUTION=72; var startRulerUnits=app.preferences.rulerUnits; var startTypeUnits=app.preferences.typeUnits; app.preferences.rulerUnits = Units.PIXELS; app.preferences.typeUnits = TypeUnits.PIXELS;

var dialogue="dialog{\     text:\'自动切图V0.1\',\  group:Group{\   orientation:\'column\',\   alignChildren:\'left\',\      process:StaticText{text:\'处理进度:\',bounds:[0,0,300,14]},\   timeline:Progressbar{bounds:[0,0,300,10],minvalue:0,maxvalue:100}\   corrdination:Panel{\    orientation:\'row\',\             text:\'裁剪尺寸\',\             x:Group{\     orientation: \'row\', \                 s: StaticText { text:\'宽:\' }, \                 e: EditText { preferredSize: [50, 20],text:128} ,\                 p: StaticText { text:\'px\' }, \             }, \             y: Group {\     orientation: \'row\', \                 s: StaticText { text:\'高:\' }, \                 e: EditText { preferredSize: [50, 20],text:64}, \                 p: StaticText { text:\'px\' }, \             } ,\         }, \   fileResource:Group{\    orientation: \'row\', \    buttonSelect: Button{text:\'待裁剪文件\', properties:{name:\'open\'} ,helpTip:\'请选择待裁剪的文件\'},\    inputText: EditText{ text:\'C:/Users/wxw/Desktop/map5_5.jpg\', preferredSize: [180, 20] },\   },\  },\  saveFileType:Group{\   orientation:\'row\', \   s:StaticText{text:\' 存储类型:\'},\   typeList:Group{\    jpeg:RadioButton {text:\'JPEG\',value:true},\    gif:RadioButton {text:\'GIF\'},\    png8:RadioButton {text:\'PNG-8\'},\    png24:RadioButton {text:\'PNG-24\'},\   }\  }, \  saveAsOptions:Panel{\   orientation: \'column\',\   alignChildren:\'left\',\         text: \'另存为设置\', \   Quality:Group{\    orientation: \'row\',  \    q: StaticText { text:\'压缩质量:\' }, \    e: EditText {text:\'60\',preferredSize: [50,20],helpTip:\'范围0-100,值越大图像越好\'} ,\    color: StaticText { text:\'颜色:\' }, \    select: DropDownList { alignment:\'left\', itemSize: [26,14] },\    opacity:Checkbox {text:\'透明\',value:true,helpTip:\'包含基于颜色不透明度的透明性\'},\   }, \   filePrefix:Group{\    orientation: \'row\',  \    s: StaticText { text:\'在文件名前添加字符:\' }, \    e: EditText { preferredSize: [50,20],text:\'cutCopy\'} ,\    s2: StaticText { text:\'勿含非法字符\' , enabled:flase }, \   }, \   fileSubfix: Group {\    orientation: \'row\',  \    s: StaticText { text:\'在文件名后添加字符:\' }, \    e: EditText { preferredSize: [50, 20] }, \    s2: StaticText { text:\'勿含非法字符\' , enabled:flase}, \   } ,\   fileNameType:Group{\    orientation: \'row\',  \    q: StaticText { text:\'输出文件命名方式:\' }, \    typeList:Group{\        single:RadioButton {text:\'序列化\'},\        double:RadioButton {text:\'双循环\',value:true},\       }\   }, \   finishProcess:Group{\    orientation: \'row\',  \    q: StaticText { text:\'处理完成后:\' }, \    c:Checkbox {text:\'关闭文件\',value:true},\    c2:Checkbox {text:\'显示处理时间\',value:true},\   }, \   saveAsFolder:Group{\    orientation: \'row\', \    buttonSelect: Button {text:\'另存至\', properties:{name:\'save\'} ,helpTip:\'请选择文件要保持的目录\'},\    inputText: EditText  { text:\'C:/Users/wxw/Desktop/cutCopys\', preferredSize: [180, 20] },\   },\  },\  tips:Panel{\      orientation:\'row\',\   alignment:\'left\',\         text: \'提醒\', \      s:StaticText{text:\'默认保存方式为直接覆盖,请注意做好备份。\'},\  },\  buttons:Group{\   orientation:\'row\',\   alignment:\'right\',\         about:StaticText {text:\'[关于程序]\'},\   Btnok: Button { text:\'确定\', properties:{name:\'ok\'} }, \         Btncancel: Button { text:\'取消\', properties:{name:\'cancel\'} } \     }, \ }";

//初始窗口对象 var win=new Window(dialogue); //初始保存设置 var saveFileType="JPEG"; var exportOptions=new ExportOptionsSaveForWeb(); exportOptions.format=SaveDocumentType.JPEG; exportOptions.quality=60; var saveFileSubFix=\'jpg\'; var filePrefix="",fileSubfix="";

//选择要裁剪的文件 win.group.fileResource.buttonSelect.onClick= function(){     var selectedFile=File.openDialog(\'选择待裁剪文件\');     if(selectedFile!=null){        win.group.fileResource.inputText.text=selectedFile.fsName;     win.group.fileResource.inputText.helpTip=selectedFile.fsName.toString();     } }

//另存为目录选择 win.saveAsOptions.saveAsFolder.buttonSelect.onClick=function(){     var saveFolder=win.saveAsOptions.saveAsFolder;     var defaultFolder=saveFolder.inputText.text;  var testFolder=new Folder(defaultFolder);  if(!testFolder.exists){   defaultFolder="~";  }  var selectFolder=Folder.selectDialog("选择存储文件夹",defaultFolder);  if(selectFolder!= null ){      saveFolder.inputText.text=selectFolder.fsName;   saveFolder.inputText.helpTip=selectFolder.fsName.toString();  } }

//颜色下拉选择 var colorList=[256,128,64,32,16,8,4,2]; for(var i=0,len=colorList.length;i<len;i++){     win.saveAsOptions.Quality.select.add("item",colorList[i]); } win.saveAsOptions.Quality.select.items[0].selected=true; //对象不可用 win.saveAsOptions.Quality.color.enabled=false; win.saveAsOptions.Quality.select.enabled=false; win.saveAsOptions.Quality.opacity.enabled=false;

//选择存储格式 var saveFileTypeList=win.saveFileType.typeList;

function toggleQuality(Options){     //开启颜色选项  win.saveAsOptions.Quality.color.enabled=Options.enableColor;     win.saveAsOptions.Quality.select.enabled=Options.enableColor;     win.saveAsOptions.Quality.opacity.enabled=Options.enableColor;  //关闭压缩质量  win.saveAsOptions.Quality.q.enabled=Options.enablePack;     win.saveAsOptions.Quality.e.enabled=Options.enablePack; }

function selectFileType(target){     saveFileType=target.text;  exportOptions=new ExportOptionsSaveForWeb();     switch(saveFileType){      case \'JPEG\':       toggleQuality({enableColor:false,enablePack:true});    exportOptions.format=SaveDocumentType.JPEG;             exportOptions.quality=win.saveAsOptions.Quality.e.text;    saveFileSubFix=\'jpg\';   break;   case \'GIF\':       toggleQuality({enableColor:true,enablePack:false});    exportOptions.format=SaveDocumentType.COMPUSERVEGIF;             exportOptions.colors=256;             exportOptions.transparency=win.saveAsOptions.Quality.opacity.value;    saveFileSubFix=\'gif\';   break;   case \'PNG-8\':       toggleQuality({enableColor:true,enablePack:false});    exportOptions.format=SaveDocumentType.PNG;             exportOptions.colors=256;    exportOptions.transparency=win.saveAsOptions.Quality.opacity.value;             exportOptions.PNG8=true;    saveFileSubFix=\'png\';   break;   case \'PNG-24\':       toggleQuality({enableColor:false,enablePack:false});    exportOptions.format=SaveDocumentType.PNG;    exportOptions.transparency=win.saveAsOptions.Quality.opacity.value;             exportOptions.PNG8=false;    saveFileSubFix=\'png\';   break;  } } //绑定文件类型选择 saveFileTypeList["jpeg"].onClick=function(){selectFileType(this);} saveFileTypeList["gif"].onClick=function(){selectFileType(this);} saveFileTypeList["png8"].onClick=function(){selectFileType(this);} saveFileTypeList["png24"].onClick=function(){selectFileType(this);}

//生成裁剪的文件 function createCutCopy(h,w,width,height,fileName){     //添加一个选区     app.activeDocument.selection.select([[w*width,h*height],[(w+1)*width,h*height],[(w+1)*width,(h+1)*height],[w*width,(h+1)*height],[w*width,h*height]]);  //剪切选区     app.activeDocument.selection.cut();  //创建一个新文档     var newDoc=app.documents.add(width,height,72,fileName,NewDocumentMode.RGB,DocumentFill.TRANSPARENT);  //粘帖当前粘帖板内容     app.activeDocument.paste();  //导出web所用格式     newDoc.exportDocument(File(win.saveAsOptions.saveAsFolder.inputText.text+\'/\'+filePrefix+fileName+fileSubfix+\'.\'+saveFileSubFix),ExportType.SAVEFORWEB,exportOptions);  //关闭文件,不保存  newDoc.close(SaveOptions.DONOTSAVECHANGES); }

//处理裁剪 function cutProcess(){     //判断当前是否有文件已经打开     if(app.documents.length>1){      alert("请先关闭不需要裁剪的文件!");   return false;  }     //打开要裁剪的文件     var fileResource=File(win.group.fileResource.inputText.text);  app.open(fileResource);  //合并所有图层  app.activeDocument.flatten();  //获得文档的宽和高  var resourceWidth=app.activeDocument.width;  var resourceHeight=app.activeDocument.height;  //获得裁剪的尺寸     var cutWidth=parseInt(win.group.corrdination.x.e.text,10);     var cutHeight=parseInt(win.group.corrdination.y.e.text,10);  //获得可裁剪成的文件数  var cutXNumber=Math.ceil(resourceWidth/cutWidth);  var cutYNumber=Math.ceil(resourceHeight/cutHeight);  var cutNumber=cutXNumber*cutYNumber;  if(cutNumber>10){      var confirmCutNumber=confirm("要终止程序执行吗?\r\n生成文件比较多,\r\n可能需要很长时间处理。",undefined,"停止程序执行?");  }  if(confirmCutNumber){return false;}  //循环处理裁剪  var sum=0;  var isSingle=win.saveAsOptions.fileNameType.typeList.single.value;  var startTime=new Date().getTime(),totalTime=\'\';  for(var y=0;y<cutYNumber;y++){      for(var x=0;x<cutXNumber;x++){       //显示处理进度    sum=y*cutXNumber+x+1;    //进度条    win.group.timeline.value=Math.round(sum/cutNumber*100);    //进度文字状态          win.group.process.text=\'处理进度\'+Math.round(sum/cutNumber*100)+\'%,\';    win.group.process.text+=\'[\'+sum+\'/\'+cutNumber+\'] \';    if(isSingle){        win.group.process.text+=\'文件:\'+filePrefix+sum+fileSubfix+\'.\'+saveFileSubFix;        createCutCopy(y,x,cutWidth,cutHeight,sum);    }else{        win.group.process.text+=\'文件:\'+filePrefix+\'x\'+(x+1)+\'y\'+(y+1)+fileSubfix+\'.\'+saveFileSubFix;        createCutCopy(y,x,cutWidth,cutHeight,\'x\'+(x+1)+\'y\'+(y+1));    }    if(sum>=cutNumber){        //关闭文件     if(win.saveAsOptions.finishProcess.c.value){         app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);     }     //显示处理时间     if(win.saveAsOptions.finishProcess.c2.value){         totalTime=\'用时:\'+Math.round((new Date().getTime()-startTime)/1000)+\'秒\';     }        alert("裁剪完毕!"+totalTime);     //关闭对话框     win.close();    }   }  } }

//判断设定 function checkSetting(){     if(!win.group.corrdination.x.e.text||win.group.corrdination.x.e.text<1){alert("请设置宽度");return false;}  if(!win.group.corrdination.y.e.text||win.group.corrdination.y.e.text<1){alert("请设置高度");return false;}

 if(!win.group.fileResource.inputText.text){alert("请选择待裁剪文件");return false;}  if(!File(win.group.fileResource.inputText.text).exists){alert("文件不存在!");return false;}

 if(!win.saveAsOptions.saveAsFolder.inputText.text){alert("请选择存储目录");return false;}  if(!Folder(win.saveAsOptions.saveAsFolder.inputText.text).exists){alert("目录不存在!");return false;}

 if(saveFileType=="JPEG"){      if(!win.saveAsOptions.Quality.e.text){       alert("请设置压缩质量");    return false;   }   if(win.saveAsOptions.Quality.e.text<1||win.saveAsOptions.Quality.e.text>100){       alert("压缩质量参数错误!");    return false;   }  }

 //文件名前后缀  filePrefix=win.saveAsOptions.filePrefix.e.text;     fileSubfix=win.saveAsOptions.fileSubfix.e.text;  //alert(win.group.corrdination.x.e.text);  //alert("checkOk");  cutProcess(); }

//确定按钮 win.buttons.Btnok.onClick=function(){  checkSetting(); } //取消按钮 win.buttons.Btncancel.onClick=function(){  app.preferences.rulerUnits=startRulerUnits;  app.preferences.typeUnits=startTypeUnits;  this.parent.parent.close(); } //关于 win.buttons.about.onClick=function(){     alert("自动切图专用工具V1.0\r\n Power By:www.wxwdesign.com \r\n 流水涵清","About"); }

//窗口居中 win.center(); //显示窗口 win.show();

 

分类:

技术点:

相关文章: