用Photoshop脚本批量为照片增加拍摄时间水印 您所在的位置:网站首页 如何利用ps处理水印 用Photoshop脚本批量为照片增加拍摄时间水印

用Photoshop脚本批量为照片增加拍摄时间水印

2024-05-27 19:20| 来源: 网络整理| 查看: 265

效果

在这里插入图片描述

感谢

本脚本参考了:laozeng, https://github.com/laozeng1024

核心功能 如果照片为横幅,则顺时针旋转90°后,再增加水印;如果exif中没有拍摄时间,从xmp信息里取;增加 JPEG 保存时存储质量等设置(默认保存质量为10);增加了水印字体设置,水印字体设置是字符串,是 postScript 名称,mac下,可以通过【字体册】应用查看;根据分辨率的不同(基准分辨率为72),计算水印pt大小; 使用方法

Photoshop - 文件 - 脚本 - 浏览 - (打开js文件)

代码

链接: https://github.com/leongongye/create_date_watermark_using_photoshop/blob/main/add_date_watermark.js

/* 功能:photoshop脚本从exif获取日期,自动添加日期水印。如没有exif日期信息,则从xmp信息从读取日期。 作者:leongongye, https://github.com/leongongye 参考: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"; //exif中“日期戳”字段名称,urlencode编码 var photoTimeStr2 = "%E6%97%A5%E6%9C%9F%E6%88%B3"; //"原始日期时间" var photoTimeStr3 = "%E5%8E%9F%E5%A7%8B%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 //打开遍历到的图片 var docRef = open(fileList[i]); //设置另存路径文件名,重命名为:new_原文件名 var fileout = new File(outFolder+'/new_'+ basename(fileList[i])) // 旋转照片 if(docRef.width > docRef.height){ docRef.rotateCanvas(90); } // 添加水印 addDateTimeWatermark(docRef); //另存照片 saveDocAsCopy(docRef); } } alert("添加日期水印,已处理完成!") } function saveDocAsCopy(docRef) { //定义一个变量[asCopy],用来指定图片以副本的方式保存 var asCopy = true; //定义一个变量[extensionType],用来指定图片名称的后缀为小写的.jpg var extensionType = Extension.LOWERCASE; //定义一个变量[options],用来指定图片保存的格式为JPG。PNG为PNGSaveOptions var jpegSaveOptions = JPEGSaveOptions; jpegSaveOptions.embedColorProfile = true; jpegSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE; jpegSaveOptions.matte = MatteType.NONE; jpegSaveOptions.quality = 10; docRef.saveAs(fileout, jpegSaveOptions, asCopy, extensionType); //操作完成后,直接关闭文档 docRef.close(SaveOptions.DONOTSAVECHANGES); } function addDateTimeWatermark(docRef) { //获得exif照片日期,可自行加自定义文字customStr //photoTime = getExifData(docRef) + decodeURIComponent(customStr) photoTime = getDocCreateTime(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/25/(docRef.resolution/72); //默认分辨率72,根据分辨率修改pt layerRef.textItem.font = "LetsgoDigital-Regular"; //设置字体 // gimmePostScriptFontName("asdfasdf"); //定义颜色 var color = new RGBColor(); //设置red属性 color.red = 235; //设置green属性 color.green = 175; //设置blue属性 color.blue = 12; //定义水印文字的颜色 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.translate(docRef.width/1.65, docRef.height/1.15); //合并文本图层至背景图层 layerRef.merge(); } function getCreateDateFromXmp(doc) { var ns = "http://ns.adobe.com/xap/1.0/"; ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript'); xmpMeta = new XMPMeta(doc.xmpMetadata.rawData); var theValue = xmpMeta.getProperty(ns, "CreateDate"); return theValue; } //获取exif中的日期 function getDocCreateTime(doc) { var exifData = doc.info.exif; var photoTime = 0 //1. 优先从 exif 里取 for(j = 0; j //urlencode 中文再判断 //日期时间 case photoTimeStr: case photoTimeStr2: case photoTimeStr3: photoTime = exifData[j][1]; p = photoTime.split(" ") // 2020:10:11 12:08:33 替换为2020-10-11 12:08:33 // 格式 2023-01-13 14:23:58 // photoTime = p[0].replace(/:/g,"-")+" "+p[1] photoTime = p[0].replace(/:/g,"-") break; } } if(photoTime==0){ // 2. 最后从 xmp 数据里取,原始格式 2023-01-14T10:11:07+08:00 var xmpCreateDateStr = getCreateDateFromXmp(doc)+""; var sp = xmpCreateDateStr.split("T"); // photoTime = sp[0]+" "+sp[1].substring(0,8); // photoTime = sp[0].replace(/-/g,"/") photoTime = sp[0] /* if(doc.info.creationDate){ // 2. 从doc的creationDate 里取,格式 20230113 // photoTime = doc.info.creationDate+"-D"; photoTime = getCreateDateFromXmp(doc)+"-X"; }else{ // 3. 最后从 xmp 数据里取,原始格式 2023-01-14T10:11:07+08:00 photoTime = getCreateDateFromXmp(doc)+"-X"; } */ } // alert(photoTime); return photoTime; } function ShowTheObject(obj){ var des = ""; for(var name in obj){ // des += name + ";"; des += name + ":" + obj[name] + ";"; } return des; } //获取文件名 function basename(str) { str = str.toString(); var idx = str.toString().lastIndexOf('/') idx = idx > -1 ? idx : str.lastIndexOf('\\') if (idx numOfFonts = app.fonts.length; // var s = ""; for (var i = 0, numOfFonts; i return app.fonts[i].postScriptName; } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有