2009年9月

今天鬼火说要做个批量在图片中添加当前文件名称的水印,在群里面发问.俺记得PS的批量做的应该是很不错的.所以爽口说了PS完全胜任,结果打开PS发现其本身根本没有这个功能....遂爬文,得到了下面的代码.放到PS的安装目录下面的Presets目录下面的Scripts目录重启PS即可.在PS的菜单->文件->脚本里面可以找到.
这里附源码,可以修改里面的水印位置还有字体样式.addFileName.jsx

// this script is a variation of the script addTimeStamp.js that is installed with PS7 
//Copyright 2002-2003. Adobe Systems, Incorporated. All rights reserved. 
//All amendments Copyright Brian Price 2004 ([email protected]) 

//Check if a document is open 
if ( documents.length > 0 ) 
{ 
var originalRulerUnits = preferences.rulerUnits; 
preferences.rulerUnits = Units.PERCENT; 

try 
{ 
var docRef = activeDocument; 

// Create a text layer at the front 

var myLayerRef = docRef.artLayers.add(); 
myLayerRef.kind = LayerKind.TEXT; 
myLayerRef.name = "Filename"; 
var myTextRef = myLayerRef.textItem; 

//Set your parameters below this line 

//If you wish to show the file extension, change the n to y in the line below, if not use n. 
var ShowExtension = "n"; 
// Insert any text to appear before the filename, such as your name and copyright info between the quotes. 
//If you do not want extra text, delete between the quotes (but leave the quotes in). 
var TextBefore = ""; 

// Insert any text to appear after the filename between the quotes. 
//If you do not want extra text, delete between the quotes (but leave the quotes in). 
var TextAfter = ""; 

// Set font size in Points 
myTextRef.size = 10; 

//Set font - use GetFontName.js to get exact name 
myTextRef.font = "Verdana"; 

//Set text colour in RGB values 
var newColor = new SolidColor(); 
newColor.rgb.red = 255; 
newColor.rgb.green = 255; 
newColor.rgb.blue = 0; 
myTextRef.color = newColor; 

// Set the position of the text - percentages from left first, then from top. 
myTextRef.position = new Array( 5, 94); 

// Set the Blend Mode of the Text Layer. The name must be in CAPITALS - ie change NORMAL to DIFFERENCE. 
myLayerRef.blendMode = BlendMode.NORMAL; 

// select opacity in percentage 
myLayerRef.opacity = 100; 

// The following code strips the extension and writes tha text layer. fname = file name only 

di=(docRef.name).indexOf("."); 
fname = (docRef.name).substr(0, di); 
//use extension if set 
if ( ShowExtension == "y" ) 
{ 
fname = docRef.name 
} 

myTextRef.contents = TextBefore + " " + fname + " " + TextAfter; 


} 
catch( e ) 
{ 
// An error occurred. Restore ruler units, then propagate the error back 
// to the user 
preferences.rulerUnits = originalRulerUnits; 
throw e; 
} 

// Everything went Ok. Restore ruler units 
preferences.rulerUnits = originalRulerUnits; 
} 
else 
{ 
alert( "You must have a document open to add the filename!" ); 
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×