1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

如何运用python完成图片转化字符画

序言

本文将详细介绍如何运用python完成图片转化字符画,使用PIL的python包实现数字图像处理,非常简单易懂,只需两行编码就可轻松将一张照片转化成字符画。

如何运用python完成图片转化字符画

字符画介绍

字符画是由标识符搭配而成,它们可以被看作为清晰度较高的较大块,其中一个字节可表示一个颜色,标识符越多,表现的色调和层次感越好。要手工制作字符画需要良好的美术基础知识,还需要耗费大量时间和精力,但我们可以通过Python,只需简单的操作就可将图片轻松转化为1个字符画。

案例介绍

以下为两个案例源代码:

案例1

设计效果图:

先打开图,把图象修改尺寸:

img=Image.open(picPath)
img=img.resize((picW,picH))

随后载入灰度级,然后把灰度级和标识符相匹配下去就可以了。

fromPILimportImage
lstChars=list("$B%8&WM#*oahkbdpqwmZO0QLaCJUYXzczjhdhsdavunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'.")
defoneChars(r,g,b,alpha=256):
    globallstChars
    length=len(lstChars)
    gray=int(0.2126*r+0.7152*g+0.722*b)
    index=length*gray
    returnlstChars[index]
picPath="C:UsersAdministratorDesktopaaaaaaa.png"
picH=40
picW=80
img=Image.open(picPath)
img=img.resize((picW,picH))
txt=""
foryinrange(picH):
    forxinrange(picW):
        txt+=oneChars(img.getpixel((x,y)))
    txt+="\n"
printtxt

案例2

以下为源代码:

#-*-coding=utf-8-*-
fromPILimportImage

IMG='IMG.jpg' #设置图片文档
WIDTH=150 #设置字符画的宽
HEIGHT=80 #设置字符画的高
OUTPUT='T.txt' #设置存放字符画的文本文件
ascii_char=list("$B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'.") #设置显示的字符集

#将256灰度映射到70个字符上
defget_char(r,g,b,alpha=256):
    #alpha为透明度
    #判断alpha值,为0表示全透明
    ifalpha==0:
        return''
    #获取字符集的长度,这儿为70
    length=len(ascii_char)
    #将RGB值转为灰度级gray,灰度级范围为0-255
    gray=int(0.2126*r+0.7152*g+0.0722*b)
    #灰度级范围为0-255,而字符集只有70
    #需要进行如下处理才能将灰度级映射到指定的标识符上
    #防止当灰度级为255时,输出的第70个字符超出列表索引,所以需要将(255+1)
    unit=(255.0+1)/length
    #返回灰度级对应的标识符
    returnascii_char[int(gray/unit)]

if__name__=='__main__':
    #打开并调整图片的宽和高
    im=Image.open(IMG)
    im=im.resize((WIDTH,HEIGHT),Image.NEAREST)
    #初始化输出的字符串
    txt=""
    #遍历图片中的每一行
    foriinrange(HEIGHT):
        #遍历该行中的每一列
        forjinrange(WIDTH):
            #将(j,i)坐标的RGB清晰度转为标识符后添加到txt字符串
            txt+=get_char(*im.getpixel((j,i)))
        #遍历完一行后需要增加换行符
        txt+="\n"
    #输出到屏幕
    print(txt)
    withopen(OUTPUT,'w')asf:
        f.write(txt)

使用以上代码即可将图片转化为字符画,运作完毕后会生成名为T.txt的文档。

原照:

生成文件图:

结尾

以上文章详细介绍了如何运用python完成图片转化字符画,希望可以给大家带来帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5789.html