js 日期加一年_Photoshop脚本实现批量添加日期水印

本文介绍了如何使用JavaScript脚本在Photoshop中批量为照片添加日期水印,特别是在照片拥有不同拍摄日期时。通过GitHub分享的脚本代码,用户可以将脚本导入Photoshop并指定照片目录,实现自动化处理。如果照片缺少EXIF日期信息,可以从文件名读取日期。此外,文中还提供了脚本调试方法。
摘要由CSDN通过智能技术生成

前言

手头有上百张照片打印,需要在照片添加上拍摄日期水印,最原始的方法就是使用Photoshop给每张照片逐一添加。Photoshop的动作录制,可以实现批量相同日期,但每张照片拍摄日期都不尽相同,显然不能满足需求。

当然,Photoshop还支持自定义脚本,实现照片批量处理。脚本实现效果阅读原文查看动图。

自动化脚本

脚本代码如下,如有更新请查看github:

https://github.com/laozeng1024/photoshop

/*
文件:auot_add_date.js
功能:photoshop脚本从exif获取日期,自动添加日期水印。如没有exif日期信息,则从文件名从读取日期。
作者:laozeng,https://github.com/laozeng1024
*/

//自定义字符串,如“@上海”,使用urlencode编码
var customStr = "%40%E4%B8%8A%E6%B5%B7";
//exif中“日期时间”字段名称,urlencode编码
var photoTimeStr = "%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4";

var inputFolder = Folder.selectDialog("请选择需要添加日期水印图片所在文件夹:");
var outFolder = Folder.selectDialog("选择图片保存输出的文件夹:");

//判断文件夹是否存在
if (inputFolder != null && inputFolder != null)
{
//获得文件夹下的所有图片
var fileList = inputFolder.getFiles();

//遍历图片
for (var i = 0; i < fileList.length; i++)
{
//判断图片是否正常文件,并且处于非隐藏状态
if (fileList[i] instanceof File && fileList[i].hidden == false)
{
//打开遍历到的图片
var docRef = open(fileList[i]);

//设置另存路径文件名,重命名为:new_原文件名
var fileout = new File(outFolder+'/new_'+ basename(fileList[i]))

//获得exif照片日期,可自行加自定义文字customStr
//photoTime = getExifData(docRef) + decodeURIComponent(customStr)
photoTime = getExifData(docRef)
//如果exif没有日期数据,从文件名读取
if (photoTime == 0)
{
photoTime = basename(fileList[i])
photoTime = photoTime.toString().slice(0, -4)
}

//新建图层
var layerRef = docRef.artLayers.add();

//设置为文字图层
layerRef.kind = LayerKind.TEXT;

//设置图层文字
layerRef.textItem.contents = photoTime;

//根据图片宽度比例,设置文字大小
layerRef.textItem.size = docRef.width/20;

//定义颜色
var color = new RGBColor();

//设置red属性
color.red = 255;

//设置green属性
color.green = 255;

//设置blue属性
color.blue = 255;

//定义水印文字的颜色
var sc = new SolidColor();

//设置[sc]对象的[rgb]属性的值为变量[color]
sc.rgb = color;

//将文本图层的字体颜色设置为变量[sc]
layerRef.textItem.color = sc;

//设置文本图层透明度
layerRef.fillOpacity = 90;

//将文本图层向下移动。调节日期水印左右和上下位置
layerRef.translate(250, docRef.height/1.15 - 72);

//合并文本图层至背景图层
layerRef.merge();

//另存照片
//定义一个变量[asCopy],用来指定图片以副本的方式保存
var asCopy = true;

//定义一个变量[extensionType],用来指定图片名称的后缀为小写的.jpg
var extensionType = Extension.LOWERCASE;

//定义一个变量[options],用来指定图片保存的格式为JPG。PNG为PNGSaveOptions
var options = JPEGSaveOptions;
docRef.saveAs(fileout, options, asCopy, extensionType);

//操作完成后,直接关闭文档
docRef.close(SaveOptions.DONOTSAVECHANGES);
}
}
alert("添加日期水印,已处理完成!")
}

//获取exif中的日期
function getExifData(doc) {

var exifData = doc.info.exif;
var photoTime = 0
for(j = 0; j < exifData.length; j++ )
{
encodeStr = encodeURIComponent(exifData[j][0])
switch(encodeStr)
{
//urlencode 中文再判断
//日期时间
case photoTimeStr:
photoTime = exifData[j][1];
break;
}

}
return photoTime;
}

//获取文件名
function basename(str) {
str = str.toString();
var idx = str.toString().lastIndexOf('/')
idx = idx > -1 ? idx : str.lastIndexOf('\\')
if (idx < 0) {
return str
}
return str.substring(idx + 1);
}

使用方法

  1. 将脚本代码保存到本地。

  2. photoshop-文件-脚本-浏览,选择脚本js,根据提示选择照片所在目录,即可批量添加日期水印。

注意事项

  1. 如照片经过处理没有exif日期信息,或exif无法读取日期信息,则从文件名从读取日期。

    可将照片文件名命名为日期格式,如2020-06-01.jpg

  2. 相机语言为英文,exif日期字段可能为英文,需要自行修改“photoTimeStr”字段,并用urlencode编码。

  3. 可通过customStr字段自定义日期水印外的文字,同样需要urlencode编码。

附录:如何在Photoshop调试js脚本

方法1:最原始方法,在js脚本中使用alert弹窗调试。

方法2:利用mac脚本编辑器来执行js代码,错误会在编辑器中提示。如Adobe Photoshop 2020中调试脚本为:

tell application "Adobe Photoshop 2020"
do javascript "#include /Users/person/04Photo/John/auto_add_date.js"
end tell

24f01b155e45503200b72c95b1cc41b9.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值