实现图片转换成字符画

python小程序:实现图片转换成字符画

看到网上有很多这样的小程序,自己动手做一个

内附详细说明~

先附上效果图

部分解释

运行平台: Win10
Python版本: Python3.9 
IDE: Pychram

Image模块:Image模块在PIL库中,python3安装PIL库需要安装pillow-pil,在Pychram中操作为File | Settings | Project: xxx | Python Interpreter,点击左下角加号,搜索pillow-pil安装,提示安装成功即可,使用  from PIL import Image 导入;

Image模块的用法详情可见https://blog.csdn.net/yjwx0018/article/details/52852067

灰度图:定义自行百度。导入的图片一般是RBG模式的,使用Image模块中的convert('L')将其转换成灰度图方便操作;

getpixel函数:得到每一个像素的灰度级别,参数是一个坐标点,返回值随着图像模式的不同而不同,灰度图的返回值为一个0~255的整数。

代码

from PIL import Image           # 导入Image模块

"""
创建64个字符的list,目的是让256级灰度每四级对应一个字符
由于纯白的灰度级别为255,为了将白色和几乎为白色的像素点在字符图里面为空白,list的后四位为空格(即16级灰度)
"""
lst = list("@$#%&WASGHKBMRDFZXNVCJLQOTPYEUIab987654321~?!^*()<>+-=[]{},.    ")


def get_char(pixel_Tvalue):
    return lst[pixel_Tvalue // 4]


if __name__ == '__main__':
    img = Image.open(r"D:\Temp\pika.jfif").convert("L")        # 打开图片并转换为灰度图
    wide, high = img.size                                      # 得到原图片的宽和高
    wide, high = wide // 4, high // 4
    img = img.resize((wide, high))                             # 将图片缩小到原来的四倍,可以自行修改测试
    text0 = ""
    for i in range(high):
        for j in range(wide):
            text0 += get_char(img.getpixel((j, i)))            # 利用getpixel得到灰度级别
        text0 += '\n'

    with open(r"D:\Temp\字符图.txt", "w") as f:
        f.write(text0)

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值