Photoshop如何给照片加水印日期-给照片加上时间水印+日期的水印脚本

时间:2022-10-19 浏览:104
    其实用PS软件给照片加水印日期是很简单的我们只要加上时间水印+日期的水印蒙版,放入你需要的位置就ok了。具体操作是使用PS的图片批处理功能。批处理里边加入一个脚本即可实现。下面我们附上了脚本代码,代码可以添加很多照片exif信息。如果不需要哪个,你就找到TI.contents这个变量后边的东西可以添加删除。
    给照片加水印日期脚本代码的使用方法如下:
(1)将代码拷入记事本,选择菜单“文件-另存为”,
(2)文件名可以输入中文,如“图片加框和EXIF信息.jsx”等,保存类型选择 所有文件。
(3)将文件存到“C:\Program Files\Adobe\Photoshop CS\预置\脚本”目录中(根据实际安装位置),
(4)使用:在Photoshop CS菜单中选择:文件-〉脚本


 //--- 

displayDialogs = DialogModes.NO; 
var defaultRulerUnits = preferences.rulerUnits; 
preferences.rulerUnits = Units.PIXELS; 

//将一个长字串分解成单个字符串
function explodeArray(item) { 
var i=0;
var Count=0; 
var tempString=new String(item); 
tempArray=new Array(1); 

do{ 

i=tempString.indexOf(":");
if(i>0)
tempString=tempString.substr(i+1,tempString.length-i-1);
i=tempString.indexOf(">");
if(i>0)
{
tempArray[Count]=tempString.substr(0,i); 
tempString=tempString.substr(i+1,tempString.length-i-1);
Count ++;
}
i=tempString.indexOf("<");
if(i>0)
{
tempArray[Count]=tempString.substr(0,i); 
tempString=tempString.substr(i-1,tempString.length-i+1);
Count ++;
}
}while (tempString.indexOf("</x:xmpmeta>")>0);

tempArray[Count]=tempString; 
return tempArray; 


var AD = activeDocument; 
var resRatio = AD.resolution/72; 

if(resRatio!=1){ 
AD.resizeImage(AD.width.value,AD.height.value,72); 


var heightVar = AD.height.value+2; 
var photoWidth = AD.width.value; 
var photoHight = AD.height.value; 

//获取RAW保存的信息
var exifData = AD.xmpMetadata.rawData.toString();

//将EXIF信息分成单个的相关信息
explodeArray(exifData); 

var stringTemp=""; //临时字串
var make=""; //相机公司
var model=""; //相机型号
var camera=""; //相机
var lens=""; //镜头类型
var apertureValue=""; //
var lensUsed=""; //使用的镜头

var focalLength=""; //焦距
var exposureTime=""; //快门
var fNumber=""; //光圈
var ISOSpeedRatings=""; //ISO设置
var exposureBiasValue=""; //曝光补偿
var exposureProgram=""; //曝光程序
var Fired=""; //闪光模式
var dateTimeOriginal=""; //拍摄时间

//改成你自己想写的,比如版权所有和你自己的网名等
//如果为空,将采用相机设置的名字
var creator="myngo"; //拍摄者

var i=0;
var j=0;
var k=0;
var dateArray1="";
var dateArray2="";
var monthsArray="";
var phoDate = "";
var phoTime = "";

//Photoshop CS获取EXIF信息

for(n = 0; n < tempArray.length; n ++) { 

stringTemp=tempArray[n];

//快门速度
if(stringTemp.indexOf("ExposureTime")!=-1){ 
exposureTime = tempArray[n+1]; 
break;

}

//光圈大小
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("FNumber")!=-1){ 
fNumber = tempArray[n+1];
break;

}

//拍摄日期、时间
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("DateTimeOriginal")!=-1){ 
dateTimeOriginal = tempArray[n+1]; 
break;

}

//使用焦距
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(tempArray[n]=="FocalLength"){ 
focalLength = tempArray[n+1];
break;

}

//ISO设置
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("ISOSpeedRatings")!=-1){ 
ISOSpeedRatings = "ISO"+tempArray[n+5]; 
break;

}

//曝光补偿
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("ExposureBiasValue")!=-1){ 
exposureBiasValue = tempArray[n+1]; 
break;

}

//曝光程序
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("ExposureProgram")!=-1){ 
exposureProgram = tempArray[n+1]; 
break;

}

//闪光模式
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("Fired")!=-1){ 
Fired = tempArray[n+1]; 
break;

}

//使用镜头类型
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(tempArray[n]=="Lens"){ 
lens=tempArray[n+1]; 
break;

}

//相机厂商
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("Make")!=-1){ 
make = tempArray[n+1]; 
break;

}

//相机型号
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("Model")!=-1){ 
var model = tempArray[n+1]; 
break;

}

//对于有的相机型号不包括制造商部分
//camera = make+model; 

//对于有的相机型号包括制造商部分
camera = model; 

//相机所有者
for(n = 0; n < tempArray.length; n ++) { 
stringTemp=tempArray[n];
if(stringTemp.indexOf("creator")!=-1 && creator==""){ 
creator = tempArray[n+5]; 
break;

}

//检查快门速度(全部保留到小数点后一位)
dateArray1 = exposureTime.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(i/j>=1)
exposureTime=parseInt(i/j)+"."+(i-parseInt(i/j)*j);
else{
j=parseInt(j/i);
i=1;
exposureTime=i+"/"+j;
}

//检查光圈大小
dateArray1 = fNumber.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(j>1)
fNumber=i/j;
else
fNumber=i;

//检查焦距
dateArray1 = focalLength.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(j>1)
focalLength=parseInt(i/j);
else
focalLength=i;

//检查曝光补偿
dateArray1 = exposureBiasValue.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(i>0)
exposureBiasValue="+"+(parseInt(i*10/j))/10;
else
exposureBiasValue=(parseInt(i*10/j))/10;

//检查曝光程序
//程序顺序根据相机差异调整
dateArray1= exposureProgram;

dateArray2 = ["Manual",
"Program",
"Aperture",
"Shutter",
"A-DEP"];

exposureProgram = dateArray2[dateArray1-1];

//检查闪光模式
dateArray1 = Fired;
if(dateArray1.indexOf("True")!=-1)
Fired="FlashOn";
else
Fired="FlashOff";

//改变日期格式
dateArray1 = dateTimeOriginal.split("T"); 

phoDate = dateArray1[0];
phoTime = dateArray1[1];

//日期转换为英文格式(如Jun 22 2005),喜欢可以把注释符号"//"去掉
//dateArray2 = phoDate.split("-"); 
//monthsArray =["Jan", 
//"Feb", 
//"Mar", 
//"Apr", 
//"May",
//"Jun", 
//"Jul", 
//"Aug", 
//"Sep", 
//"Oct", 
//"Nov", 
//"Dec"]; 
//phoDate = monthsArray[dateArray2[1]-1]+" "+dateArray2[2]+" "+dateArray2[0]; 

dateArray2 = phoTime.split("+");
phoTime = dateArray2[0];

//你有什么镜头,就根据镜头和最大焦距改吧

if(lens != "")
{

if(lens.indexOf("28.0-70.0 mm")!=-1){
lensUsed = "EF 28-70mm f/2.8L USM"; 

if(lens.indexOf("70.0-200.0 mm")!=-1){
lensUsed = "EF 70-200mm f/2.8L USM";
}
//if(lens.indexOf("85 mm")!=-1){
//lensUsed = "Canon 85mm F1.8 USM"; 
//} 
//if(lens.indexOf("100.0 mm")!=-1){
//lensUsed = "Canon Macro 100mm F2.8 USM"; 
//}

}
else 
{

//如果没有镜头信息,就使用原来的办法比较

var focLength=parseInt(focalLength);
if(focLength>=28 && focLength<=70){ 
lensUsed = "EF 28-70mm f/2.8L USM"; 

if(focLength>70 && focLength<=200){ 
lensUsed = "EF 70-200mm f/2.8L USM";
}
//if(focLength=="85"){ 
//lensUsed = "Canon 85mm F1.8 USM"; 
//} 
//if(focLength=="100"){ 
//lensUsed = "Canon Macro 100mm F2.8 USM"; 
//} 
}

//画线和框
//定义黑色,你也可以定义其他颜色哟
var black = new SolidColor(); 
black.rgb.red = black.rgb.green = black.rgb.blue = 51; 

var white = new SolidColor(); 
white.rgb.red = white.rgb.green = white.rgb.blue = 255; 

var grey = new SolidColor(); 
grey.rgb.red = grey.rgb.green = grey.rgb.blue = 153; 

var red = new SolidColor();
red.rgb.red = 255; red.rgb.green = 0; red.rgb.blue = 0;

var yellow = new SolidColor();
yellow.rgb.red = 255; yellow.rgb.green = 153; yellow.rgb.blue = 0;

var blue = new SolidColor();
blue.rgb.red = 0; blue.rgb.green = 0; blue.rgb.blue = 255;

//加入一条白线,你可以将白线宽窄设为2或4,两边,实际宽度除以2
backgroundColor = white; 

//如果改为黑线
//backgroundColor = black; 

AD.resizeCanvas(AD.width.value+2,AD.height.value+2, 
AnchorPosition.MIDDLECENTER); 

//加入黑框,这里将黑框宽窄设为图片宽窄的1/10,两边,实际宽度再除以2
backgroundColor = black; 

//如果改为白框
//backgroundColor = white; 

//边框宽度和高度
var fWidth = parseInt(photoWidth/60);
var fHight = parseInt(photoHight/40);
//字体左边距和下边距
var tLeft = parseInt(fWidth/2+10);
var tHight = parseInt(fHight/2);
//字号
var tSize = parseInt(fWidth/2);

AD.resizeCanvas(AD.width.value+fWidth,AD.height.value+fHight, AnchorPosition.MIDDLECENTER); 

//底部再加宽点,便于写字,这里将下边的边框加倍
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+tHight,AnchorPosition.TOPCENTER); 
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+tHight,AnchorPosition.TOPCENTER); 
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+tHight,AnchorPosition.TOPCENTER); 

//标字和参数 

var nameLayer = AD.artLayers.add(); 
nameLayer.kind = LayerKind.TEXT; 
var TI = nameLayer.textItem; 

//右对齐
TI.justification = Justification.RIGHT;

//标字的位置
TI.position = [AD.width.value-tLeft,heightVar-tHight];

//标字的位置1
//TI.position = [AD.width.value-tLeft,heightVar+tHight];

//TI.contents = "By "+creator;

//字体、字号、颜色和加粗等 
TI.font = "Angel"; 

//TI.font = "宋体"; 

TI.size = tSize+16; 
TI.color = red; 

//如果为白框,字体为黑色
//TI.color = black; 

TI.fauxBold = true; 

var infoLayer = AD.artLayers.add(); 
infoLayer.kind = LayerKind.TEXT; 
var TI = infoLayer.textItem; 

//右对齐,如果左对齐可以省略下面这行
TI.justification = Justification.RIGHT;

//标字的位置
TI.position = [AD.width.value-tLeft,heightVar+tHight+tHight+tHight+tHight+tHight];

//显示:相机型号,镜头,焦距,曝光时间,光圈,ISO设置,拍摄日期等

TI.contents = camera+" with "+lensUsed+" @ "+focalLength+"mm "+exposureProgram+" "+exposureTime+"s f/"+fNumber+" "+exposureBiasValue+"EV "+ISOSpeedRatings+" "+Fired+"\u000D Time: "+phoDate+" "+phoTime;

//TI.contents = k+" "+model;

//字体、字号、颜色等 
TI.font = "Tahoma"; 
TI.size = tSize+6; 
TI.color = white; 

//如果为白框,字体为黑色
//TI.color = black; 

AD.flatten();