当前位置: 首页 > 后端技术 > Python

用Python实现图片转文字绘图,soeasy!

时间:2023-03-26 18:22:53 Python

相信大家经常在网上看到有人晒各种人物画。对于这个五光十色的世界,我们每天看到的都是一些高清的彩色图片,偶尔来一张粗糙的黑白人物画,就相对释然了。人物画的原理这种人物画的原理也比较简单。我们可以把每个字符看成一个大像素,一个字符可以代表一种颜色。字符越多,可以反射的颜色就越多。画面更有层次感。灰度值和RGB灰度值是指该点在黑白图像中的颜色深度,其范围是0-255,白色为255,黑色为0,其他颜色介于两者之间。RGB是红绿蓝三种颜色,通过不同的叠加可以得到其他颜色。将图片转为人物画,首先需要定义一个字符集,用于与灰度值进行映射,将图片每个像素点的RGB值转化为灰度值,输出对应的字符即可得到人物画。RGB转灰度值,有一个转换公式,来自网络:gray=(2126r+7152g+722*b)/10000代码练习我随便选了一张图:我的目标是转换成下面这样:根据上面的转换原理,我们直接上传代码:fromPILimportImagechar=list('M3NB6Q#OC?7>!:–;.')defget_char(r,g,b,alpha=256):ifalpha==0:return''gray=(2126*r+7152*g+722*b)/10000char_idx=int((grey/(alpha+1.0))*len(char))filereturnite_char_f_out,filer_f_out,名称内容):withopen(out_file_name,'w')asf:f.write(content)defmain(file_name="input.jpg",width=100,height=80,out_file_name='output.txt'):text=''im=Image.open(file_name)im=im.resize((width,height),Image.NEAREST)foriinrange(height):forjinrange(width):text+=get_char(*im.getpixel((j,i)))text+='\n'print(text)write_file(out_file_name,text)if__name__=='__main__':main('dance.png')程序思路:定义一个字符er数组,这个数组里面的字符可以随便写。解析图像,将图像中的每个像素点解析成一个RGB值。根据我们上面的公式,每个像素点转换为字符数组中的一个字符。通过拼接所有像素对应的字符完成转换。综上所述,图片转人物画的原理和思路比较简单,实现起来也不复杂。你可以自己试试!以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书和教程,数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。