python画人物代码_代码绘制一只小猪佩奇---python篇

这篇博客介绍了如何使用Python的Pillow库绘制小猪佩奇的ASCII艺术。通过读取图片,转换为灰度图像,获取每个像素点的灰度值,并映射到预定义的字符列表,最终将图片转化为文本形式。提供了两种转换方法,一种直接使用灰度图像,另一种通过灰度转换公式。代码示例展示了实现过程,并展示了最终效果。
摘要由CSDN通过智能技术生成

今天教大家用python的pillow包来绘制小猪佩奇,python的安装就不用多说了,直接上代码吧

0、首先当然是安装pillow包啦。

关于pillow库的安装有几种方式

最常使用的是pip安装

$ pip install pillow

2、通过pycharm安装

1、了解一下pillow库的基本使用

#导入模块

from PIL import Image

#读取文件

img = Image.open('test.jpg')

#保存文件

#img.save(filename,format)

img.save(filename,"JPEG")

img_mode = img.mode

#图片模式的转换

img = img.convert("L") #转化成灰度图像

#获取每个坐标的像素点的RGB值

r,g,b = img.getpixel((j,i))

#重设图片大小

img = img.resize(width,height)

#创建缩略图

img.thumbnail(size)

#获取图片大小

(width,height) = img.size

#获取图片的源格式

img_format = img.format

#获取图片模式,有三种模式:L(灰度图像),RGB(真彩色)和CMYK(pre-press图像)

2、开始绘画

首先是要有一张图片喽,准备一一张小猪佩奇的照片:

timg.jpg

然后就是放大招是时候了;

(原理简述:就是获取图上每一点的RGB值,然后根据这三种值确定这一点采用什么字符,其实根据RGB来确定的交灰值,所以可以将图片转化成灰度图片,来直接获取每一点的灰度,或者通过灰度的转换公式来使得RGB三值转化成灰度当然了,深度的原理我也不太懂,这里有链接,有兴趣的可以看一下大神们的解释)

上代码:

#coding:utf-8

from PIL import Image

#要索引的字符列表

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

length = len(ascii_char)

img = Image.open('timg.jpg') #读取图像文件

(width,height) = img.size

img = img.resize((int(width*0.5),int(height*0.2))) #对图像进行一定缩小,图片的大小可以根据上传图片的大小来按需调节,

print(img.size)

def convert(img):

img = img.convert("L") # 转为灰度图像

txt = ""

for i in range(img.size[1]):

for j in range(img.size[0]):

gray = img.getpixel((j, i)) # 获取每个坐标像素点的灰度

unit = 256.0 / length

txt += ascii_char[int(gray / unit)] #获取对应坐标的字符值

txt += '\n'

return txt

def convert1(img):

txt = ""

for i in range(img.size[1]):

for j in range(img.size[0]):

r,g,b = img.getpixel((j, i)) #获取每个坐标像素点的rgb值

gray = int(r * 0.299 + g * 0.587 + b * 0.114) #通过灰度转换公式获取灰度

unit = (256.0+1)/length

txt += ascii_char[int(gray / unit)] # 获取对应坐标的字符值

txt += '\n'

return txt

txt = convert(img)

f = open("03_convert.txt","w")

f.write(txt) #存储到文件中

f.close()

然后上效果图

pig.png

还是蛮像的嘛,

over

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值