华域联盟 其它综合 photoshop 批量处理图片大小的脚本代码

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();


本文由 华域联盟 原创撰写:华域联盟 » photoshop 批量处理图片大小的脚本代码

转载请保留出处和原文链接:https://www.cnhackhy.com/134412.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部