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

Python写字实用工具——实现图片转人物画

时间:2023-03-25 19:53:24 Python

1.人物画简介,是一系列人物的组合。我们可以把每个字符看成一个大像素,一个字符可以代表一种颜色。人物种类越多,能够表现的色彩就越多,人物画的层次感也会越强。灰度值是指该点在黑白图像中的颜色深度,范围为0-255,白色为255,黑色为0。RGB为红绿蓝三种颜色,其他颜色可以通过不同的叠加得到。图片转文字绘画的原理是先定义一个用灰度值进行映射的字符集,将图片每个像素点的RGB值转换成灰度值,输出对应的字符,得到文字绘画。RGB转灰度值,有一个心理学公式,网上搜了一下,我们用下面的公式gray=(2126*r+7152*g+722*b)/100002.实现2.1准备工作#1.WhatweuseIt是Python3,确保有Python3环境python3-V#2.安装Python图像处理库pillow(PIL)pipinstall--upgradepippipinstallpillow2.2codeascii.py#!/usr/bin/python3#coding:utf-8fromPILimportImage#ascii_char=list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'。")ascii_char=list('MNHQ$OC?7>!:–;.')defget_char(r,g,b,alpha=256):ifalpha==0:return''#这是一个优化,转换浮点数运算转换成整数运算gray=(2126*r+7152*g+722*b)/10000#为什么是1.0因为alpha和gray是整数运算,小于1就是计算为0char_idx=int((gray/(alpha+1.0))*len(ascii_char))returnascii_char[char_idx]defwrite_file(out_file_name,content):withopen(out_file_name,'w')asf:f.write(content)defmain(file_name="test.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)))文本+='\n'print(text)write_file(out_file_name,text)if__name__=='__main__':main('dora.png')2.3测试#1.准备图片dora.png#2.执行命令python3ascii.pyMMH$$$NMMQ7777>$NOMO7777777C77OMC77777777>Q:$777M77777777$>Q7O$OQ$M?777777NNOH.N>N?>777777N:N:>QQQQHN77777MN.:?????M77777?;:???QQQQ!HH7777H!!何;C7777QQQQQHNNHNM$>:OC7777QQQQQQQQQQQQQQQQQQQQQO?$7777QQQQQQQQQQQQQQQQQQ$MM7777CQHNC?$MHQQQQQQQQQQM–?777?77777777?QQQQQQQ?MM777N$777777777MQQQH–??777!.777777777QQH!C777?O777777N!:?77?–.!QQMMMMMH$MO777NNQQQQQQ–QCMNMNQQNQ7777HQ;;;;M77777777CO;;;C?777777777O>H???777777Q!;HO:;HMC:NH7O$777$:?MMM777777H?NQ?77777?:;QQQQMH777777C.?Q?:HMQQQM$7777777QQ7?M77777777777QQ?NO777HMM7777777777777777$MMN;MN77777777777OMC7777777HM77777QM7QM;OM$?OM3.总结2202/5/24学习python的基本应用和pillow库的使用