成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用Emoji表情拼成漢字

ernest.wang / 2971人閱讀

摘要:使用表情組成漢字或者簡(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

相關(guān)文章

  • 每日 30 秒 ? 字符編碼排雷錄

    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 ...

    mmy123456 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<