用ps腳本自動合成新聞稿四格圖片

2022-12-26 18:31:46 來源/作者: / 己有:111人學習過

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