recherche
Maisonphp教程PHP开发使用emoji字符组成任意汉字

使用emoji表情组成汉字或者简笔画,在微信、QQ的传播中甚广,就会想着要不自己也试着做出来吧.

比如下图:

154420_BzEY_1450051.png

一开始想到的实现方案就是: 首先将汉字转化成白底黑字的图片, 然后将图片根据灰度值映射成不同的字符打印在终端。

前者文字转图片,使用常见的绘图库非常好实现(比如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'W ')
print image2print(word2image(u'茴'), u'茴', width=40)

输出结果如下:

154420_BzEY_1450051.png

154420_BzEY_1450051.png

154420_BzEY_1450051.png

更多输出:

154420_BzEY_1450051.png

154420_BzEY_1450051.png

扩展

基于zh2emoji,自己实现了一个可能有点儿用的扩展: demo_show_animation.py.

它可以将一句话在终端依次打印出来,使用你决定的emoji或者其他字符.

比如你试着执行 python ./demo_show_animation.py 喜欢就点个赞呗, 将在终端执行一段展示文字的动画, 展示的文字就是你刚才输入的话.

如果你能够坚持看到这里, 不知道你有没有想到一些有意思的玩法不? 欢迎一起参与。编程是一种乐趣,代码是将一些头脑想法实现出来的媒介;程序员写代码,就好比作家写写文字,是一种习惯。

后续我可能打算, 在终端实现播放一个由emoji组成的简笔画形象的动画(比如布卡娘的加载动画)


Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire