GitHub Star 日增 1.6K,火爆全網!這個項目很騷氣!
- 2019 年 10 月 4 日
- 筆記
本文轉自量子位,作者郭一璞
像文字雲一樣,用各種小圖拼出大的圖片,構建一個像素風的世界,就像《我的世界》里一樣,一定非常有趣。


還可以拿來做拼貼畫、十字綉等裝飾。
在這個名為 tiler 的 GitHub 開源項目里你就可以自動實現這一切,它剛剛開源一天,就已經漲到了 1500 星,增長速度肉眼可見。
https://github.com/nuno-faria/tiler
Tiler,意味瓦工,也就是用各種小元素作為 「瓦」,搭建出一張大圖片。
項目預設了不少 「瓦」:有樂高、加號、圓形、@符號、心形、乘號、波浪線、橫豎條、《我的世界》中的各種格子,以及曲別針形:

另外還有一組萬聖節主題 icon,包括各種南瓜燈、小鬼頭、蝙蝠、貓頭鷹:

這些不同的 「瓦」 都可以設定大小顏色和角度,以適應不同的畫面規格。
另外,你還可以設定整個畫面中由多少種顏色構成和 「瓦片」 的大小,也就是馬賽克的模糊程度。
你可以用不同材質的 「瓦片」,拼接出各種圖案。
比如梵高的《星空》,項目中展示了 10×10、25×25、50×50 三種圓形拼成的規格:

△ 10×10 的《星空》

△ 25×25 的《星空》

△ 50×50 的《星空》
有沒有在 PS 里拖動高斯模糊半徑控制條的感覺?
你也可以設置讓構成圖片的 「瓦片」 大小不一

也可以試試拿樂高積木來拼:

放大看,斑斕的星空,是這樣的:

一個個小磚塊,布滿了樂高積木表面特有的圓形凸起。
嗯,要是真有這麼大一片樂高,想想就爽歪歪。
(此處衝去樂高門店下單,金幣 – 1000)
還有乘號版:

如果放大,你就會發現,這就是十字繡的圖樣啊!

這麼大一副十字綉,色彩艷麗,斑斕交錯,一看就可以玩很久,退休老母親看到兩眼發光。

就是綉完掛在家裡,也和你北歐風 / 極簡風 / 莫蘭迪風 / 自如風的房間非常搭配,成為全場最吸睛的裝飾畫。
要是木有耐心,可以考慮一個迷你版:

還可以做成《我的世界》的樣子


星空的細節如下:

你們能認識這些磚塊都是啥么……
運行指南
如果想在自己電腦上運行的話,除了 Python 3 和 pip,你還需要裝 OpenCV、numpy 和 tqdm。
之後,靠命令行就可以解決了。
你需要設置幾個參數:
在 gen_tiles.py 中設置:
- DEPTH:每個顏色通道中的分割數量 (ex: DEPTH = 4 -> 4 * 4 * 4 = 64 colors);
- ROTATIONS:旋轉列表,以度為單位,應用在原始影像上 (ex: [0, 90])。
在 tiler.py 中設置:
- COLOR_DEPTH:每個顏色通道中的分割數量 (ex: COLOR_DEPTH = 4 -> 4 4 4 = 64 colors);
- RESIZING_SCALES:應用於每個圖塊的比例 (ex: [1, 0.75, 0.5, 0.25]);
- PIXEL_SHIFT:移動以創建每個框的像素數 (ex: (5,5)); if None, shift will be the same as the tile dimension);

- OVERLAP_TILES:如果構成影像的 「瓦片」 可以重疊;
- RENDER:渲染影像;
- POOL_SIZE:多處理池大小;
- IMAGE_TO_TILE:影像到瓦片(如果作為第一個參數傳遞則忽略);
- TILES_FOLDER:瓦片文件夾(如果作為第二個 arg 傳遞則忽略);
- OUT:結果影像文件名。
腦洞豐富的作者
這個項目的作者 ID 叫 nuno-faria,除了這個 Tiler 項目之外,他還開源過不少有趣的東西。
有一個用 Java 寫的推箱子:

像素風滿滿的桌面足球:

還有俄羅斯方塊、彈球等許多種,個個都還蠻有意思的~
如此極具創造力的作者,實在令人佩服,有興趣的話,可以到其主頁深入了解一下:
https://github.com/nuno-faria