[ Processing ] 如何輸出為圖片和影片

Pan/ ㄆㄢˉ/潘
It’s Pan’s tiny land
4 min readMar 21, 2020

最近重拾processing的學習,想將製作出來的影像儲存紀錄卻不知道該從何下手,網路上的教學也很片面,花了點時間研究之後決定記錄下來以免忘記。若有人有其他好用的方法也歡迎留言分享給我~

首先是首先是存文圖片的方法,在此提到的這個作法是在運行城市的過程中做像是截圖的動作,無論對於靜態圖片或是動態影像都可以使用。

可放在所有程式碼的最後方,不用放在draw()裡面,指令為:若在運行過程中按下小寫的s或是大寫的S,將會儲存png圖檔。圖檔位置會在pde檔的儲存資料夾中,而####的部分則是截圖時的幀數,可依需求作加減。

void keyPressed() {
if (key == 's' || key == 'S') saveFrame("#####.png");
// == 為等於 , 而 || 為或者的意思
}

影片的部分則比較複雜,這次先來做比較簡單的方式,使用Processing內建的Movie Maker,也可加入音訊檔。

首先在最前面加入一個boolean,規範錄製範圍。

接著在draw()前面,定義keyPressed(),指令為:若在運行過程中按下小寫的r或是大寫的R,將會開始或是暫停錄製。

在draw()的最後面,條件定義recording時,則儲存圖檔,而與先前不同的是這裡的圖檔名稱####前多加了 output/ ,所以在此所儲存出的檔案會在一個新開的資料夾 "output" 中,以免跟其他檔案混在一起。

void keyPressed() {
if (key == ‘r’ || key == ‘R’) {
recording = !recording; // ! 為否的意思
}
}
void draw(){
background(153,70,49);
for ( int x =-20 ; x<= 820 ; x +=20 ) {
for ( int y =-20 ; y<= 820 ; y +=20 ) {
float d =sin( (x+y)*0.02 ) *30 ;

posX = sin( x*0.02 + frameCount*0.03 ) *20 +x ;
posY = sin( y*0.02 + frameCount*0.02 ) *20 +y ;

ellipse( posX , posY , d , d );
}
}
if (recording){
saveFrame(“output/#####.png”);
}
}
到這一步就會得到一海票的圖片檔

接下來就是要將他們製成影片檔了,除了一般大家常用的各種影片製作軟體之外,也可以使用processing內建的Movie Maker來快速製作。

選擇工具裡面的Movie Maker
進入到Movie Maker設定頁面

選擇剛剛圖檔的儲存位置 "output",設定幀數,像數的部分除非有特別的需求不然我建議就直接選擇同原始尺寸,也可以選擇想要的音源檔輸入,這裡我先沒有置入聲音,接著就可以輸出了。

輸出之後會獲得一個MOV的影片檔,我的電腦剛好沒有撥放器可以撥放,所以必須再多加一個步驟轉檔,我這次選擇使用的是在線轉檔網站Aconvert省去下載安裝軟體的麻煩。

選擇要轉檔的檔案和要轉出的格式
轉出後的檔案可以用各種方式儲存

最後就會得到一個可以上傳到社群軟體刷刷存在感的影片檔了。

--

--

Pan/ ㄆㄢˉ/潘
It’s Pan’s tiny land

不務正業的建築人// 夢想是環遊世界卻口袋空空 一心想耍廢度日卻不得不每天努力和生活奮鬥的白日夢患者 ig:meihsin_pan