1-processing 的IDE 是不能直接輸入中文的,只能粘貼。如果粘貼后仍然無法顯示,可以在Preference 里面的 Editor and Console font 上選擇一個能顯示中文的字體聋袋。我用的是“Andale Mono” 突倍。
相信很多人都看過Gif 狂人 Dave Whyte 的作品(http://beesandbombs.tumblr.com/archive)腔稀。
看到這些動圖盆昙,稍微了解過Processing的人都會有動手的沖動。
但有時做 Gif 步驟太繁瑣了焊虏,很多人即使實驗成功淡喜,做成一張后,以后也很難堅持下去诵闭。
下面將自己的私藏武器拿出來炼团。會使 Gif 的制作變得極為方便。
技巧
以往的方法涂圆,一般是通過 saveFrame()命令導出系列幀们镜。再在其他軟件中進行合成。
現(xiàn)在我們可以直接用 GifAnimation 模塊來實現(xiàn)(詳細介紹: http://extrapixel.github.io/gif-animation/)润歉∧O粒可在 sketch - import library - add library 里面搜索導入。
下面是“萬用代碼”踩衩。
import gifAnimation.*;
GifMaker exp;
void setup(){
setup_();
exp = new GifMaker(this,"1.gif");
exp.setRepeat(0);? //Gif重復播放的次數(shù)嚼鹉,0為循環(huán)播放
exp.setDelay(50); //設置幀與幀之間的延遲時間,單位為毫秒驱富。數(shù)值為50時锚赤,幀率則為 20(1000/50)。
}
void draw(){
draw_();
if(frameCount % 1 == 0){? //每間隔多少幀褐鸥,寫入一次(相當于改變播放速率)
exp.addFrame();? //將當前幀寫入文件內(nèi)
}
}
void mousePressed(){
exp.finish();? //導出Gif
}
/////////////////////////
使用的時候线脚,可以將上面代碼粘在原代碼前面。然后在 setup 和 draw 后面加上一條下劃線即可叫榕。
原代碼如:
void setup(){
size(400,400);
}
void draw(){
background(0);
ellipse(frameCount % width,200,50,50);
}
修改后:
void setup_(){
size(400,400);
}
void draw_(){
background(0);
ellipse(frameCount % width,200,50,50);
}
之后只要點擊一下鼠標浑侥,就能直接保存Gif。一行代碼也不用敲~~
完整代碼
下面再給出一個完整的實例
import gifAnimation.*;
GifMaker exp;
void setup(){
setup_();
exp = new GifMaker(this,"1.gif");
exp.setRepeat(0);? //Gif重復播放的次數(shù)晰绎,0為循環(huán)播放
exp.setDelay(50); //設置幀與幀之間的延遲時間寓落,單位為毫秒。數(shù)值為50時荞下,幀率則為 20(1000/50)伶选。
}
void draw(){
draw_();
if(frameCount % 1 == 0){? //每間隔多少幀,寫入一次(相當于改變播放速率)
exp.addFrame();? //將當前幀寫入文件內(nèi)
}
if(frameCount*ring[0].speed > 2*PI/5){
exp.finish();? //導出Gif
}
}
void mousePressed(){
}
/////////////////////////
int num;
Ring []ring;
void setup_(){
size(400,400);
num = 15;
ring = new Ring[num];
for(int i = 0;i < num;i++){
ring[i] = new Ring(30 + 25*i,10,10);
}
}
void draw_(){
background(0);
translate(width/2,height/2);
for(int i = 0;i < num;i++){
ring[i].run();
}
}
class Ring{
float r,w,speed;
int num;
float angle;
Ring(float r_,float w_,int num_){
r = r_;
w = w_;
num = num_;
speed = 0.01;
angle = 2*PI / num;
}
void run(){
rotate(frameCount*speed);
strokeCap(SQUARE);
for(int i = 0;i < num;i++){
noFill();
if(i%2 == 0){
stroke(255);
}else{
stroke(0);
}
strokeWeight(w);
arc(0,0,r,r,0,angle);
rotate(angle);
}
}
}
導出效果:
與第一個例子略有不同的尖昏,不再是用鼠標點擊的方式來決定 Gif 的保存時間仰税。要制作出完美的,首尾無縫循環(huán)的動圖抽诉。第一步需要考慮它的循環(huán)周期肖卧,并添加一個判斷條件來作為終止。例如這張圖的循環(huán)時間就在圓環(huán)旋轉(zhuǎn)超過五分之一的位置掸鹅,所以才有代碼
if(frameCountring[0].speed > 2*PI/5){ exp.finish(); //導出Gif }
因為制作流程變方便了塞帐。每次做練習,只要是略微有看點的效果巍沙,自己都習慣導出一個Gif出來葵姥。推薦用這種方式作為一個學習的記錄。
Test 9
Test 22
Test 23
Test 35
(更多練習:http://weibo.com/wenziyang)
小練習無需精雕細琢句携,但可以推進自己進行大量的輸出榔幸。希望大家也能享受制作Gif的樂趣~~
微調(diào)
最后,如果導出的Gif文件太大矮嫉∠髋兀可以再導入 photoshop 進行修改。打開后蠢笋,選擇 “文件” — “儲存為Web格式所用格式”拨齐,即可設置圖片大小以及色值精度。由于微信中有2m大小的Gif限制昨寞,所以這個ps功能還是很常用的瞻惋。
視頻轉(zhuǎn)GIF
如果想將視頻轉(zhuǎn)成Gif,在 Mac 上推薦 gifrocket援岩。小巧并且操作簡單歼狼。