- 生成随机字符
在前面的处理中,我们都只是将文本修改了一次,更多的时候,我们要批量生成有随机字符的图片。首先我们实现一个生成随机数字字符串的函数。
function GetNumStr(num)
{
var str='';
for(var i=0;i<num;i++){
str += Math.floor(Math.random()*10).toString();
}
return str
}
Math.random()可以生成0到1范围的随机数,乘以10再向下取整可得到0到9的整数,然后通过.toString()转化为字符串,根据我们输入的参数可以得到指定长度的随机数字字符串。
我们执行这个函数:
var fileRef = new File('E:/小黄人.psd');
var docRef = app.open(fileRef);
//图层的结构前面几篇有提到
var MyTextlayer1 = docRef.layers[0].layers[0];
MyTextlayer1.textItem.contents = GetNumStr(10);
效果如下
image.png
- 批量保存
我们把前面实现好的保存代码写成一个函数:
function SaveJpg(num)
{
//获取当前活动文档
var doc= activeDocument
var jpgOptions = new JPEGSaveOptions();
//enter number or create a variable to set quality
jpgOptions.quality = 8;
jpgOptions.embedColorProfile = true;
jpgOptions.formatOptions = FormatOptions.STANDARDBASELINE;
//only used with Progressive
if(jpgOptions.formatOptions == FormatOptions.PROGRESSIVE){
jpgOptions.scans = 3};
jpgOptions.matte = MatteType.NONE;
var imgpath = 'E:/' + num.toString() + '.jpg';
doc.saveAs (new File(imgpath), jpgOptions, true, Extension.LOWERCASE);
}
传入的参数是给文件命名使用
接着批量生成图片
var fileRef = new File('E:/小黄人.psd');
var docRef = app.open(fileRef);
var MyTextlayer1 = docRef.layers[0].layers[0];
for(var i=0;i<5;i++)
{
MyTextlayer1.textItem.contents = GetNumStr(10);
SaveJpg(i);
}
image.png
在循环里也可以对文本图层做其他操作,自由发挥
网友评论