二、找茬游戏中脚本的应用
项目要求:制作一大批图片。每两幅一组,两幅之间有十处不同,记录每处不同的矩形区域坐标。
首先是制作图片:其实就是简单的p图,制造一些差异。 为了方便对比观察,避免错漏,使用了cs3的智能对象的堆栈功能(new)。 感觉这样比较方便比较,能在精确查看不同的同时ps图片的内容。
首先建立固定大小的文件,再把素材图拉进来,调整大小,然后ctrl+e合并到底层(合并是为了确保未来的智能对象大小和图像大小一致),ctrl+j 新建一层。我们只ps 新建出来的这一层,下面不动。 因为有10处差异,所以光靠切换可视对比~比较辛苦,且容易错漏,[差值]对比效果也差又累。 所以我们同时选中两个图层,右键-[转换为智能对象],然后菜单-图层-智能对象-堆栈模式-标准偏差

这时候我们就明显看到两层之间的差异了, 我们可以双击图层面板的智能对象缩略图,就可以展开进入智能对象内部,继续编辑两个图层

我们在智能对象内部编辑的时候,只要随手ctrl+s 保存一下,就可以看到原图(黑色那张)上的差异变化了。
图像处理完后,然后就是获得由差异区域的坐标:程序需要把差异区域作为一个个矩形,要得到每个区域左上角和右下角的坐标。

最开始,想把所有区域拉出选区,然后通过 cs3 的新增统计功能获得详细的选区数据,结果~~ 非常遗憾,统计可以同时获得所有选区的周长、长宽、面积甚至密度~ 就是不给出具体的每一组坐标(如下图所示)

于是只有改变做法,这时候想到了脚本 里面的 selection.bounds 获得选区坐标, 遗憾的发现,似乎脚本里面没有获取多个区域选取数据的方法,只能获得总选区的左上角+右下角坐标 也就是说10个区域当成一个大区域来看了。~
继续改变方案,改用图层,每个图层只记录一个区域,总可以了吧~~ 因为之前的经验,确定图层的范围坐标是可以在脚本里通过 ArtLayer.bounds 获取的。 所以接下来要做的事情就是手动建立一个个小矩形的图层。
由于工作量巨大,不偷懒是不行的,所以录制了一个动作

可以看到,这个动作录制了3步:
- 新建图层
- 填充选区
- 取消选区
而且这个动作设置了快捷键 F12 (双击动作名称,就可以设置快捷键)
有了这个动作,我只要拉出一个选区,然后按一下 F12,就自动新建一个图层,并填充好。 这样就方便脚本获取每层的数据了。 完成后的文件结构如下:

上面是10层不同位置的矩形,最底层是一个智能对象(包含两个图层,上面一层为修改后的,下面一层为原图) 文件格式ok,接下来就是脚本大显身手的地方了。
出处:蓝色理想
责任编辑:bluehearts
上一页 谈PS动作、脚本实际工作中的应用 [1] 下一页 谈PS动作、脚本实际工作中的应用 [3]
◎进入论坛Photoshop、Fireworks版块参加讨论,我还想发表评论。
|