python绘制emoji_使用Emoji表情拼成汉字

这只是一个娱乐性的实现,纯属突发奇想。

使用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)

输出结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值