昨日, 一老友突然发个信息问在没, 有事, 当时一紧张, 想到底应该说在还是不在呢?接着又来了几句说会不会PS, 还好这位朋友没有问我会不会修电脑, 心理顿时欣慰了。
就勉强问要P啥(心理完全没底, 几年没安装过PS了, 就大学学了几个皮毛), 沟通后, 知道是要修改图片上的文字, 感觉还好, 瞎搞瞎搞就能弄出来了。
图片样例大概这样:
一张图大概7, 8个地方需要修改, 修改下来已经累觉不爱了, 特别是字体大小, 位置, 颜色等, 太费时间了。
被告知会有50, 60个需要修改的, 顿时感觉压力山大了, 心理想PhotoShop会不会有什么机制能支持这种重复
繁杂的工作呢?了解到PhotoShop是支持脚本的, 感觉看到一些希望了。
-
PhotoShop支持三种脚本语言
PhotoShop DOM结构
-
PhotoShop DOM结构很类似于HTML的DOM结构, 理解起来也比较容易
脚本编写(JavaScript)
- 现在把主要的工作分成: 擦除需要修改的区域和填写对应的文本到擦除区域, 于是写了这两个这样的函数
1. 中文支持: 必须设置字体, 否则中文乱码textItem.font="SimSum"
2. 执行下次操作前合并图层doc.mergeVisibleLayers(), 否则不能继续进行。
3. PS中的矩阵区域表示为: Array(Array(930, 125), Array(1400, 125), Array(1400, 175), Array(930, 175))
4. 文本区域和擦除区域不太吻合: 按理擦除区域即为之后的填充区域, 但实际会有像素偏差, 需要调整。
-
处理Excel为JSON
1. 日期处理: 读取excel时, 读取日期类型后为浮点数, 需要引入xldate_as_tuple进行处理
2. 默认Python使用Ascii进行IO解码, 需要运行时设置
3. json dump时, 会将中文编码为Ascii, 也需要设置参数json.dumps(facets, ensure_ascii=False, indent=2)
完善JavaScript脚本
脚本执行
- 打开PhotoShop及其对应的图片文档, 选择执行的脚本即可
这样基本不需要操作就能完成PS了, 具体可参考
文档。