使用emoji表情組成漢字或簡筆畫,在微信、QQ的傳播中甚廣,就會想著要不自己也試著做出來吧.
比如下圖:
一開始想到的實現方案是: 首先將漢字轉換成白底黑字的圖片, 然後將圖片根據灰階值映射成不同的字元印在終端機上。
前者文字轉圖片,使用常見的繪圖庫非常好實現(比如python的PIL庫);工作量無非只是實現過程中慢慢調整排版, 以達到自己的預期效果.
後者則是簡單的映射關係而已: 將圖片中像素點的灰階值, 映射成某個字元; 在該實現中, 對於黑底白字的圖片只有兩個映射關係,黑字對應要替換的emoji字元, 白底對應空白.
該部分的python實現代碼如下:
ascii_char = list('1234567890abcd ') # 任意多个字符,灰度值的映射区间 def select_ascii_char(r, g, b): ''' 在灰度图像中,灰度值最高为255,代表白色; 最低为0,代表黑色 ''' # 把RGB转为灰度值,并且返回该灰度值对应的字符标记 # 'RGB-灰度值'转换公式如下 gray = int((19595 * r + 38469 * g + 7472 * b) >> 16) # ascii_char中的一个字符所能表示的灰度值区间 unit = 256.0 / len(ascii_char) return ascii_char[int(gray/unit)]
select_ascii_char 就實現了將一個像素點映射成一個具體的自定義字符char.
在本功能的實現中, ascii_char更簡單, 只需要兩個字符即可: 一個任意給定, 一個是空格.
因此將 ascii_char 換成 [u'❤️ ', u' ']
由於需要將圖片的像素點映射到可在終端的顯示空間有限, 所以需要對圖片進行縮小調整.
zh2emoji的代碼在我的github上有對應的代碼下載, 如果你有興趣,可以fork後實現自己想要的更多自定義功能.
展示
一個" Hayes"字我有N多種寫法:
print image2print(word2image(u'茴'), u'❤️ ') print image2print(word2image(u'茴'), u'W ') print image2print(word2image(u'茴'), u'茴', width=40)
輸出結果如下:
:
比如你試著執行 python ./demo_show_animation.pypy 喜歡就點個讚唄, 將在終端執行一段展示文字的動畫, 展示的文字就是你剛才輸入的話.
如果你能夠堅持看到這裡, 不知道你有沒有想到一些有意思的玩法不? 歡迎一起參與。程式設計是一種樂趣,程式碼是將一些頭腦想法實現出來的媒介;程式設計師寫程式碼,就好比作家寫寫文字,是一種習慣。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具