切換
舊版
前往
大廳
主題

GIF轉ASCII動畫

夜貓Nightcats | 2022-06-06 05:15:23 | 巴幣 10 | 人氣 153

先上結果



這是這次程式設計的期末作業
簡單說就是把圖片轉換成用ASCII的方式顯示出來
一次處理好幾張再輸出就成了動畫
大概說一下跑的流程

首先是ASCII的部分,為了讓程式知道什麼地方要用什麼字元
必須先儲存所有字元的像素資料
我的作法是先把cmd的字型改成像素字型,每個字是8*8的大小
把要用到的所有字元都輸出之後截圖保存,再用編輯軟體將周圍多餘的空白去除
順便把顏色改成只有黑白,最後得到的就會是像這樣子的一張圖片
(因為我沒有放空白所以總共只有94個字元)

有了圖片之後就簡單了,因為我們已經知道每個字元佔的像素是8*8
只要用迴圈和陣列將這94個字,總共752*8個像素全部儲存起來就OK了
到這邊前置作業就差不多,再來就是處理圖片了

我們要先把讀進來的圖片轉成黑白才可以拿去和ASCII做判斷
可以先用下面這個公式轉灰階:
Gray = (R*299 + G*587 + B*114 + 500) / 1000
在根據這個Gray在門檻之上或之下去設定RGB是255還是0就好了
門檻的大小可以自己訂,這個會影響之後顯示的效果

所以我們現在總共有:
ASCII字元的像素資料、圖片的像素資料,而且這些像素不是黑就是白
接下來就是簡單的比對了
因為字元是8*8,所以我們也將圖片分成若干個8*8的區域
將這些區域去和所有的字元做比對,找出最像的那個字元就可以了
建議找出字元之後先用字串的方式存起來,等所有的運算都結束了再一次顯示,才不會有延遲問題

更新
覺得很有趣所以就搞了Bad Apple出來,花超多時間在弄檔案和音樂
要找到高品質的轉檔方式還真不容易==
而且轉出來之後總共有三千多張圖,丟進程式記憶體直接溢出
稍微改了一下程式碼和縮小圖片才優化的好一些
然後上音樂的時候影像又一直偏快或偏慢,最後是直接用影片編輯軟體解決,但還是嘗試了很久就是了

更新星爆

創作回應

更多創作