图片转字符画-----做出酷炫的头像

本文介绍如何使用Python将普通的头像转化为酷炫的ASCII艺术形式,并附带具体实现代码。仅需不到50行代码即可完成从图像读取、缩放到ASCII字符映射的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想不想在简历上把自己普普通通的头像变为酷炫牛逼的大佬范?

只要不到50行代码就能实现!!!

下面代码中ascii_char的字符列表,可以自行调整到符合自己满意的程度。

from PIL import Image

IMG='i.png'

WIDTH=90
HEIGHT=45

#ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
#经过调试,以下字符显示效果更好,而且也符合灰度值变化
ascii_char = list("@#&$*ox!i;.")

#将256灰度映射到70个字符上
# 图片格式为RGB的*im.getpixel((j,i)后会得到三个参数r(red),g(green),b(blue);RGBA得到四个参数r,g,b,alpha(透明度,0表示完全透明)
    # im.getpixel((j,i))得到一个由r, g, b, alpha(如果有的话)构成的元祖,加上*号即表示拆分元祖分别赋值引用
def get_char(r,g,b,alpha=256):#alpha透明度
     # 如果是透明的,则输出空格
    if alpha==0:
        return ' '
    length=len(ascii_char)
       # r,g,b转换为灰度值,白色是255,黑色是0
    gray=int(0.2126*r+0.7152*g+0.0722*b)#计算灰度
     # 单元字符的灰度值大小
    unit=(256.0+1)/length
     # 字符从小到大表示灰度值,已知灰度值大小,一个字符表示的灰度值大小,求该灰度值由第几个字符表示,ascii_char[i]
    return ascii_char[int(gray/unit)]
    #通过灰度来区分色块

if __name__=='__main__':
    im=Image.open(IMG)
    im=im.resize((WIDTH,HEIGHT),Image.NEAREST)
     # im.resize(size,filter)
    # 变量filter为NEAREST、BILINEAR、BICUBIC或者ANTIALIAS之一
    # 如果忽略,或者图像模式为“1”或者“P”,该变量设置为NEAREST,速度快
    # ANTIALIAS 抗锯齿,质量最高;BICUBIC 三次样条插;BILINEAR 线性插值法
    txt=""
    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt+=get_char(*im.getpixel((j,i)))
        txt+='\n'

    #print (txt)
    #写入文件
    with open("image2Ascii.txt",'w') as f:
        f.write(txt)
        f.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值