摘要:使用表情組成漢字或者簡(jiǎn)筆畫(huà),在微信的傳播中甚廣,就會(huì)想著要不自己也試著做出來(lái)吧比如下圖實(shí)現(xiàn)步驟一開(kāi)始想到的實(shí)現(xiàn)方案就是首先將漢字轉(zhuǎn)化成白底黑字的圖片然后將圖片根據(jù)灰度值映射成不同的字符打印在終端。
這只是一個(gè)娛樂(lè)性的實(shí)現(xiàn),純屬突發(fā)奇想。
使用Emoji表情組成漢字或者簡(jiǎn)筆畫(huà),在微信、QQ的傳播中甚廣,就會(huì)想著要不自己也試著做出來(lái)吧.
比如下圖:
實(shí)現(xiàn)步驟一開(kāi)始想到的實(shí)現(xiàn)方案就是: 首先將漢字轉(zhuǎn)化成白底黑字的圖片, 然后將圖片根據(jù)灰度值映射成不同的字符打印在終端。
前者文字轉(zhuǎn)圖片,使用常見(jiàn)的繪圖庫(kù)非常好實(shí)現(xiàn)(比如python的PIL庫(kù));
工作量無(wú)非只是實(shí)現(xiàn)過(guò)程中慢慢調(diào)整排版, 以達(dá)到自己的預(yù)期效果.
后者則是簡(jiǎn)單的映射關(guān)系而已: 將圖片中像素點(diǎn)的灰度值, 映射成某個(gè)字符; 在該實(shí)現(xiàn)中, 對(duì)于黑底白字的圖片只有兩個(gè)映射關(guān)系, 黑字對(duì)應(yīng)要替換的Emoji字符, 白底對(duì)應(yīng)空白.
該部分的python實(shí)現(xiàn)代碼如下:
ascii_char = list("1234567890abcd ") # 任意多個(gè)字符,灰度值的映射區(qū)間 def select_ascii_char(r, g, b): """ 在灰度圖像中,灰度值最高為255,代表白色; 最低為0,代表黑色 """ # 把RGB轉(zhuǎn)為灰度值,并且返回該灰度值對(duì)應(yīng)的字符標(biāo)記 # "RGB-灰度值"轉(zhuǎn)換公式如下 gray = int((19595 * r + 38469 * g + 7472 * b) >> 16) # ascii_char中的一個(gè)字符所能表示的灰度值區(qū)間 unit = 256.0 / len(ascii_char) return ascii_char[int(gray/unit)]
select_ascii_char 就實(shí)現(xiàn)了將一個(gè)像素點(diǎn)映射成一個(gè)具體的自定義字符char.
在本功能的實(shí)現(xiàn)中, ascii_char更簡(jiǎn)單, 只需要兩個(gè)字符即可: 一個(gè)任意給定, 一個(gè)是空格.
因此將 ascii_char 換成 [u"?? ", u" "]
由于需要將圖片的像素點(diǎn)映射到可在終端打印的字符, 終端的顯示空間有限, 所以需要對(duì)圖片進(jìn)行縮小調(diào)整.
zh2emoji的代碼在我的github上有對(duì)應(yīng)的代碼下載, 如果你有興趣,可以fork后實(shí)現(xiàn)自己想要的更多自定義功能.
展示例子一個(gè)"茴"字我有N多種寫(xiě)法:
print image2print(word2image(u"茴"), u"?? ") print image2print(word2image(u"茴"), u"茴", width=40)
輸出結(jié)果如下:
用
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44295.html
showImg(https://segmentfault.com/img/remote/1460000018653055?w=900&h=500); 簡(jiǎn)介 字符編碼、字符長(zhǎng)度錯(cuò)誤、截取字符錯(cuò)誤、UTF8、Unicode 計(jì)算機(jī)重重底層之下都是由 0 和 1 組合,但是你知道他們是怎么一步步變成字符串的嘛?在我們現(xiàn)實(shí)生活中最常見(jiàn)的例子可以通過(guò) wo 在新華字典中找到 我 這個(gè)字。同樣計(jì)算機(jī)通過(guò) 0 ...
閱讀 454·2024-11-07 18:25
閱讀 130767·2024-02-01 10:43
閱讀 944·2024-01-31 14:58
閱讀 905·2024-01-31 14:54
閱讀 83007·2024-01-29 17:11
閱讀 3267·2024-01-25 14:55
閱讀 2062·2023-06-02 13:36
閱讀 3168·2023-05-23 10:26