用ps脚本自动合成新闻稿四格图片

2022-12-26 18:31:46 来源/作者: / 己有:0人学习过

1》ReadMe.txt
包含文件:
1)ReadMe.txt
2)PhotoCombination.js,若后缀不是.js,请直接改成.js后缀。

功能介绍:
由于宣传工作的需要,经常需要把4幅图片合成1幅图片,就是类似以前的四格漫画形式。由于每次的合成操作都是重复的,因此在PS中运行该脚本可以自动完成合成过程。

图解功能:
素材:4幅图片,存放在d盘根目录下,命名规则为:1.jpg,2.jpg,3.jpg,4.jpg。
合成效果:合成后图片名称默认为jsj_wuchao.jpg,存放在d盘根目录下。
合成规则: +------+------+ ,合成图片中各部分间隔均为4个像素。
|1.jpg | 2.jpg|
+------+------+
|3.jpg | 4.jpg|
+------+------+

要求:
1)photoshop版本要求:ps cs2及以上版本,少数极精简版本不适用。
2)操作系统要求:windows平台。
3)图片格式限制:合成后的图片只能保存为jpg格式,被合成的图片格式为常见的jpg、png、bmp、gif。
4)图片大小无限制。

使用方式:
1)将选好的4幅图片,按照合成规则命名后存放在d盘根目录下。
2)打开ps软件,[文件]->[脚本]->[浏览]->[选中.js文件]->[载入],当所有打开的窗口完全关闭时可以退出ps软件,运行结果默认存放在d盘根目录下的jsj_wuchao.jpg文件。

高级用法:(修改newsphoto_process.js文件)
1)改变默认文件存放路径。
a)例如:var path1 = "d:/1.jpg" ,代表素材图片1.jpg的存放路径。
b)例如:var savepath = "d:/jsj_wuchao.jpg" ,代表合成后图片jsj_wuchao.jpg存放路径。
2)改变默认尺寸。
a)var bgwidth = new UnitValue(600,"px") ,合成后图片宽为600像素。
var bgheight = new UnitValue(480,"px") ,合成后图片高为480像素。
var partwidth = new UnitValue(298,"px") ,素材图片宽为298像素
var partheight = new UnitValue(238,"px") ,素材图片高为238像素
注:以上4个变量给定,则合成图片中各部分间隔也确定(600-(298*2)=4)。
b)若a)改变,则相应必须改变b)。
var xup= new UnitValue(-151,"px")//计算规则-151 = - (bgwidth - partwidth)/2
var xdown= new UnitValue(151,"px")//计算规则151 = (bgwidth - partwidth)/2
var yup= new UnitValue(-121,"px")//计算规则-121 = - (bgheight - partheight)/2
var ydown= new UnitValue(121,"px")//计算规则121 = (bgwidth - partwidth)/2

2》PhotoCombination.js
//photoshop处理新闻稿图片的脚本

//设置背景文档尺寸单位为像素
var originalUnit = preferences.rulerUnits
preferences.rulerUnits = Units.PIXELS
//定制常量
var path1 = "d:/1.jpg"
var path2 = "d:/2.png"
var path3 = "d:/3.png"
var path4 = "d:/4.jpg"
var savepath = "d:/jsj_wuchao.jpg"
var bgwidth = new UnitValue(600,"px")
var bgheight = new UnitValue(480,"px")
var partwidth = new UnitValue(298,"px")
var partheight = new UnitValue(238,"px")
var xup= new UnitValue(-151,"px")//计算规则-151= - (bgwidth - partwidth)/2
var xdown= new UnitValue(151,"px")
var yup= new UnitValue(-121,"px")//计算规则-121 = - (bgheight - partheight)/2
var ydown= new UnitValue(121,"px")
//新建背景文档
var bg = app.documents.add(bgwidth ,bgheight)
var layerRef =bg.layerSets.add()
//打开新文档part1
var file1 = File(path1)
var part1 = app.open(file1)
//改变新文档大小
part1.resizeImage( partwidth ,partheight )
part1.resizeCanvas( partwidth ,partheight )
part1.trim(TrimType.TOPLEFT, true, false, true, false)
//复制新文档图层
var newLayerRef =part1.activeLayer
//将part1移动到背景文档
var layer1 = newLayerRef.duplicate(layerRef,
ElementPlacement.PLACEATEND)
app.activeDocument=bg
layer1.translate(xup,yup)

//打开新文档part2
var file2 = File(path2)
var part2 = app.open(file2)
//改变新文档大小
part2.resizeImage( partwidth ,partheight )
part2.resizeCanvas( partwidth ,partheight )
part2.trim(TrimType.TOPLEFT, true, false, true, false)
//复制新文档图层
newLayerRef =part2.activeLayer
//将part2移动到背景文档
var layer2 = newLayerRef.duplicate(layerRef,
ElementPlacement.PLACEATEND)
app.activeDocument=bg
layer2.translate(xdown,yup)

//打开新文档part3
var file3 = File(path3)
var part3 = app.open(file3)
//改变新文档大小
part3.resizeImage( partwidth ,partheight )
part3.resizeCanvas( partwidth ,partheight )
part3.trim(TrimType.TOPLEFT, true, false, true, false)
//复制新文档图层
newLayerRef =part3.activeLayer
//将part3移动到背景文档
var layer3 = newLayerRef.duplicate(layerRef,
ElementPlacement.PLACEATEND)
app.activeDocument=bg
layer3.translate(xup,ydown)

//打开新文档part4
var file4 = File(path4)
var part4 = app.open(file4)
//改变新文档大小
part4.resizeImage( partwidth ,partheight )
part4.resizeCanvas( partwidth ,partheight )
part4.trim(TrimType.TOPLEFT, true, false, true, false)
//复制新文档图层
newLayerRef =part4.activeLayer
//将part4移动到背景文档
var layer4 = newLayerRef.duplicate(layerRef,
ElementPlacement.PLACEATEND)
app.activeDocument=bg
layer4.translate(xdown,ydown)

//保存背景文档
var jsj = File(savepath)
jpgSaveOptions = new JPEGSaveOptions()//保存为jpg
jpgSaveOptions.embedColorProfile = true
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE
jpgSaveOptions.matte = MatteType.NONE
jpgSaveOptions.quality = 8
app.activeDocument.saveAs(jsj,jpgSaveOptions,true,Extension.LOWERCASE)//将当前活动文档(也就是背景文档bg)保存
//关闭文档
bg.close(SaveOptions.DONOTSAVECHANGES)
part1.close(SaveOptions.DONOTSAVECHANGES)
part2.close(SaveOptions.DONOTSAVECHANGES)
part3.close(SaveOptions.DONOTSAVECHANGES)
part4.close(SaveOptions.DONOTSAVECHANGES)
app.preferences.rulerUnits = originalUnit