摘要:使用表情組成漢字或者簡筆畫,在微信的傳播中甚廣,就會想著要不自己也試著做出來吧比如下圖實現步驟一開始想到的實現方案就是首先將漢字轉化成白底黑字的圖片然后將圖片根據灰度值映射成不同的字符打印在終端。
這只是一個娛樂性的實現,純屬突發奇想。
使用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后實現自己想要的更多自定義功能.
展示例子一個"茴"字我有N多種寫法:
print image2print(word2image(u"茴"), u"?? ") print image2print(word2image(u"茴"), u"茴", width=40)
輸出結果如下:
用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44295.html
showImg(https://segmentfault.com/img/remote/1460000018653055?w=900&h=500); 簡介 字符編碼、字符長度錯誤、截取字符錯誤、UTF8、Unicode 計算機重重底層之下都是由 0 和 1 組合,但是你知道他們是怎么一步步變成字符串的嘛?在我們現實生活中最常見的例子可以通過 wo 在新華字典中找到 我 這個字。同樣計算機通過 0 ...
閱讀 430·2024-11-07 18:25
閱讀 130684·2024-02-01 10:43
閱讀 923·2024-01-31 14:58
閱讀 893·2024-01-31 14:54
閱讀 82950·2024-01-29 17:11
閱讀 3225·2024-01-25 14:55
閱讀 2036·2023-06-02 13:36
閱讀 3133·2023-05-23 10:26