用python实现图片转字符画

本文介绍了如何使用Python编程将图片转换为字符画。首先讲解了三原色和灰度值的基本概念,然后说明图片由像素点组成,可以通过坐标和灰度值映射实现转换。接着提到了需要安装Pillow库,并展示了使用该库进行实验的过程。最后,给出了代码实现和转换后的效果图。
摘要由CSDN通过智能技术生成

曾经在网上看到有人把照片转换成字符组成的画,感觉很牛。现在在学完python后,期望自己尝试一下。
首先要了解三原色与灰度值的概念
图片是由无数像素点组成的那么,我们可以将像图片分为x,y轴组成的区间,每一个像素点就是一个坐标点。再把像素点按照其灰度值进行对应的映射不就可以了吗?
首先要先安装一个第三方的库:pillow
先来试验一下这个库的方法:

 from PIL import Image, ImageFilter
 #  缩放
 im = Image.open('66.jpg')
  获得图片大小
w,h = im.size
 im.thumbnail((w//2, h//2))
 im.save('56.jpg','jpeg')


 模糊滤镜
 im2 = Image.open('56.jpg')
im3 = im2.filter(ImageFilter.BLUR)
im3.save('566.jpg','jpeg')


进行了以上实验之后,我们开始进入正题。废话不多说,直接上代码:

from PIL import Image

str1 = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
count = len(str1)
print(count)
# 步骤:先将彩色图片转换为黑白图片,然后直接将每个像素点的灰度值与字符集进行映射
def bianhuan(image_file):
    image_file = image_file.convert('L')    #   先将图片黑白化
    codePic = ''
    for h in range(0, image_file.size[1]):
        for w in range(0, image_file.size[0]):
            gray = image_file.getpixel((w,h))                    #  遍历图片所有坐标点
            print(gray)
            codePic = codePic + str1[int(((count)*gray)/256)]        #   得到图片坐标点的对应灰度值,并与字符集映射
        codePic = codePic + '\r\n'
    return codePic
fp = open(u'123.jpg','rb')
image_file = Image.open(fp)
image_file = image_file.resize((int(image_file.size[0]*0.5),int(image_file.size[1]*0.25)))   #  调节图片大小

temp = open('saonian.txt','w')
temp.write(bianhuan(image_file))
temp.close()

在这里插入图片描述

效果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值