好像需求有些不合理,什么东西需要100个文件,原来设计初始的时候为什么不定义好文字的样式,你让我批量修改怎么改。再说了,如果换肤和主题,那都是全部变啊
好吧,先不管合理性,我就是想要换个字体颜色和字体
解决思路1:打开每个文件,选择图层组或者符合样式的文字图层(可以ctrl 或者 shift选择),然后 窗口-字符统一修改
评价:少量文件没问题,量大,用别人的话来说,苦逼的需求,苦逼的劳动
解决思路2:录入动作:窗口动作
评价:但录入动作记录的选择图层是选择指定名称的图层,奶奶的,设计开始的时候就没管文字图层的名称啊,就算图层命名统一了,每个文件的图层数量也不一样啊
唉?对了,我可以用图层过滤器,按类型或者名称过滤,然后多选改变。好吧,我承认,100个文件也苦逼。
解决思路3:难道PS 就没有HTML 中的CSS 样式吗
评价:思路是好的,但也需要设计初始化的时候规范啊,例如,文字图层命名可以按照:文字样式1-标题 处理,然后按照图层名字修改啊
但,PS确实没有这样的内容,为啥?别喷,套上枷锁有好处有坏处,我想将来也会有的,纵然PS 不出,也会有插件支撑(现在我是没找到类似的插件)
那能不能像 UE 编辑器一样,选择指定文件夹的指定文本内容做替换呢?ps文件不行吧,虽然编辑后打开里面有xml内容,例如文本层的名字内容,但也有不可见字符啊,同时也看不到文字颜色大小信息,应该可以修改,但没思路啊,坐等高手批量修改。内容强制打开后文本层是这样的
<photoshop:TextLayers>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<photoshop:LayerName>土城1</photoshop:LayerName>
<photoshop:LayerText>12312</photoshop:LayerText>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<photoshop:LayerName>sdfasfasfsf</photoshop:LayerName>
<photoshop:LayerText>sdfasfasfsf</photoshop:LayerText>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<photoshop:LayerName>123123123</photoshop:LayerName>
<photoshop:LayerText>123123123</photoshop:LayerText>
</rdf:li>
</rdf:Bag>
</photoshop:TextLayers>
其实PS 是有自己的脚本的,参见:http://www.adobe.com/devnet/photoshop/scripting.html
好像网上最多的就是批量修改图层名称,大家可百度搜索一下
好吧,按照这个思路来处理下,我省略了打开文件关闭文件的需求,只是为了验证是否可以把文本层的样式修改(使用JAVA SCRIPT,具体参见上面链接下载文档)。
具体怎么使用脚本,还是参看上面链接吧,最简单的 ,写个文本文档,填写内容 alert("hello!"); ,另存为 xxx.jsx,打开PS ,再打开刚刚那个文件,出提示了
//获取当前活动文档
var doc = activeDocument;
//获取文档活动图层
var layers = doc.layers;
//定义颜色c1 蓝色
var c1 =new SolidColor();
c1.rgb.blue=255;
c1.rgb.red=0;
c1.rgb.green=0;
//new customTextStyle("red",12,xxxxx)//
//循环你图层
for(var i=0; i<layers.length;i++){
//图层是文本
if(layers[i].kind== LayerKind.TEXT){
//获取文本项
var textitem = layers[i].textItem;
//设置文本项目属性
textitem.font="STFangsong";
textitem.size =new UnitValue("14 pixels");
//设置文本颜色
textitem.color=c1;
}
}
基本上的变化可以实现,那是不是可以在文件中自定义自己的文本样式呢?new customTextStyle("red",12,xxxxx)//
有待研究
但仅仅是给大家拓展了思路。就好像脚本也可以在多人合作设计时候来执行检查:是不是所有的文本样式符合某种设计规范。