起因是我看到一個 13k stars 的項目 primitive——用幾百個三角形"畫"出一張照片。一查發現這是個大家族:emoji、字符、小圖拼貼、遺傳算法……都能重建圖像。乾脆把同一條蒙娜麗莎餵給六種工具,看誰畫得最像。
![]()
全家福:同一張蒙娜麗莎,六種方式各畫一遍。 從上到下:幾何圖元、字符畫、三角剖分、表情拼貼、表情馬賽克、基因進化。

六宮格同屏進化: 六種算法同時從 0 到 1——看誰先"認出"蒙娜麗莎。
1⃣ primitive — 幾何圖元(13.2k⭐)⭐重點

玩法: 算法每次隨機放一個三角形/矩形/圓,蓋上去算和原圖的誤差,不滿意就變異重來(爬山算法),顏色直接按覆蓋像素算最優值。放幾百個形狀後,色塊漸漸"長成"蒙娜麗莎。
實測: 沒預編譯 Windows 版,得自己裝 Go 編譯(winget 裝 Go 還失敗了,只能下綠色版 zip)。跑 200 個形狀只要 5.5 秒,出圖 1024px。動圖是 150 個形狀的漸進過程——看着色塊一點點拼出人臉,非常解壓。
唯一槽點: 結果帶隨機性,同一張圖跑兩次長得不一樣。
2⃣ ascii-image-converter — 字符畫(3.4k⭐)

玩法: 圖片轉字符,每個字符按亮度映射( .-+#@),支持彩色。
實測: 下載 exe 直接跑,秒出。彩色版 100 字符寬,遠看是蒙娜麗莎,近看全是 @#$%。
3⃣ esimov/triangle — 三角剖分(2.1k⭐)

玩法: 不是逐形狀逼近,而是先把圖採樣成 2500 個點,直接做 Delaunay 三角剖分,每個三角形填平均色。
實測: 同樣秒出。跟 primitive 的"貪心逼近"不同,它是"一張網直接罩上去"——幾何感更強,線條更銳利。
4⃣ emojillate — 表情拼貼(351⭐)

玩法: 圖片切網格,每格找顏色最接近的 emoji 填進去。
實測: 純網頁在線玩,拖圖進去等幾秒就出。調整分辨率滑塊,格子越細越像原圖。槽點: 作者自己都覺得項目過時了,頁面標題帶刪除線寫着 emojillate——但 demo 居然還活着。
5⃣ OpenMoji 馬賽克 — 表情小圖拼貼(自寫)

玩法: 和 emojillate 同思路但反過來——用 4495 個 OpenMoji 表情小圖當"瓷磚",每格選平均色最接近的表情鋪上去。
實測: 原本想用官方 photomosaic 庫,結果它跟新版 skimage 不兼容一跑就報錯,乾脆 40 行自己寫了一個。24×24 網格用了 273 個不同表情。
6⃣ EvoLisa — 基因進化(經典)

玩法: 2008 年火遍全網的"遺傳算法畫蒙娜麗莎"網頁版。50 個半透明多邊形隨機變異,像的留下不似的扔掉——模擬退火。
實測: 在線 demo 還活着。跑了 90 秒、2.3 萬次變異,能看出人形輪廓但離原圖還遠。純 JS 跑得慢,當年這玩意能讓人盯一晚上。
🪨 槽點合集
老項目通病: primitive 沒 Windows 預編譯包,裝 Go 還差點翻車
兼容性: photomosaic 官方庫跟新版 skimage 不兼容,直接報錯
進化慢: EvoLisa 跑 2.3 萬次變異才剛出人形
隨機性: primitive 每次結果不一樣,強迫症慎用
![]()
不是濾鏡,是算法在"畫"——六種方式,六個世界。
⭐ 六工具實測 | 項目鏈接:github.com/fogleman/primitive ·
github.com/TheZoraiz/ascii-image-converter ·
github.com/esimov/triangle ·
github.com/notwaldorf/emojillate ·
alteredqualia.com/visualization/evolve
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com
