前言
繼上次的操作,我們今天要來分享如何透過程式讓影像的尺寸做調整。若你都還沒看過這系列的文章可以參考這裡
Photoshop+Python釋放你的雙手來點自動化設計
Python + Photoshop 自動化實作 (1)
Python + Photoshop 自動化實作 (2)
上述文章最後一篇介紹的是開舊檔、全選、複製,然後再到貼入特定檔案的特定圖層上。貼上後會發現,尺寸位置都是錯誤的。
因此我們今天就來介紹如何調整尺寸,以及如何移動圖層的位置
實際上路
調整尺寸
這是一個極為常用的指令,在使用Python 系統DOM方法或用下面pythoncom的方式來控制photoshop 時,要記住一個觀念 – Pythoncom控制物件是由大到小
import comtypes.client
import pythoncom
控制是由大到小的概念是,程式 => 文件 => 圖層 =>圖層參數操作 & 特效
而像是調整影像尺寸大小的指令是針對整個文件,所以我們下指令的時候,就直接用doc.ResizeImage(長 , 寬 , 解析度 , 取樣方法),括號裡面也可以只有輸入長,寬 就好。
doc.ResizeImage(Width=2048,
Height=2048,
Resolution=300,
ResampleMethod=8)
refDoc.ResizeImage(1024,768)
是不是非常簡單呢?
這邊跟大家分享一個小坑,因為Resize這種操作,基本上有時候不會秒完成,所以記得使用python的time套件,讓它sleep(2) 睡個一兩秒,連續的自動化動作就比較不會出錯囉。
位移圖層 / 移動圖層
移動圖層在中文裡面的意思就是移動,我們不會想太多,但是在python控制photoshop時,若您去爬文關鍵字若下move layer,只會找到大量的資訊在講移動圖層順序的事情。
而我們這邊想做的,是把圖層內貼上的影像往上、或往左移動一些而已。這時候你要用的爬文搜尋關鍵字叫做 Translate,中文稱為位移;不過沒關係,你已經可以直接參考下面的程式碼,就能使用圖層的位移了。Layer Translate
#先將尺寸單位改成pixel
psApp.Preferences.RulerUnits = psPixels
#再給作動的圖層位移 x , y 值
refDoc.activeLayer.translate(X,Y)
但是要注意,x 負數是往左邊位移,y負數則是往上位移。其實這個 translate(x,y)就是我們在photoshop Properties視窗裡面看到的 x , y 的值是一樣的。
所以聰明的人就會先用這個來做輸入程式的數據囉。
結論:
今天分享了兩個常用的PS指令,相信初學的人會覺得,明明只是一個Ctrl+C , Ctrl+V的動作,在程式控制的寫法竟然這麼麻煩。
要知道,其實Photoshop背後是更複雜的程式所堆砌出來的,但我們透過Pytohn寫好的程式,卻可以利用在大量生成的圖片中,只要數量夠多、時間拉長,這樣撰寫程式反而節省更多時間。非常值得設計師或開發人員投資時間學習。