这次不写爬虫,来看看如何利用Python强大的图像处理库将女神照片转换成字符画。下面有请重量级女神如花登场:
那清秀的面庞,水灵的双眸,俏皮的双马尾,粉扑扑的发卡,性感的胡须还有略带羞意的抠鼻动作,满足了童年的我对美的无线遐想。就连背后的群演大妈也忍不住捂住口掩饰自己惊讶的表情,可见我的女神简直美的不可方物,美的一言难尽,美的惨绝人寰!
转换成字符画之后大概长这样:
进群:548377875 即可获取精心准备的教程以及PDF呢!需要源码后台私信小编哦!
怎么样,依然是棱角分明,含情脉脉,微启朱唇,千柔百媚,足以让六宫粉黛黯然失色!
那么如何完成这样惟妙惟肖的妙笔丹青呢?用Python简单到让人发指,不到20行代码。思路大致如下,先使用Pillow库读取图片。此处需要注意,使用pip install pillow命令安装pillow库,但是在使用的时候却是从PIL库导入相关模块。因为pillow库是PIL(Python Image Library)的分支,相对于PIL更新较为及时,兼容Python3,是图像处理的不二之选。读取完成图片之后需要将图片转换成灰度模式,灰度模式的图色彩较为单一,容易处理。由于图像是由一个个的像素点组成的,可以把它们看成一个个的小格子,里面填充了色块,利用pillow库,可以获取某个指定的坐标处的灰度值。灰度值在0-255之间,越接近于0颜色就越暗,越接近于255颜色就越亮。由此我们可以定义一串字符串,越靠前字符笔画越复杂例如@、#、¥等,当这样一大堆字符拼接在一起时,从远处看,颜色就越暗,越靠后的字符笔画越简单例如=、+、-等,当这样一大堆字符拼接在一起时,从远处看,颜色就越亮。我们将指定坐标处的像素根据其灰度值替换成相对应的字符,然后拼接起来,写入一个txt文档,将相当于使用字符临摹了这张图片。
完整代码如下:
1"""
2@author: Kevin Wong
3@function: 使用pillow模块将图片转换成字符画
4@time: 2018/11/04 13:54
5"""
6from PIL import Image
7# 读取图片
8img = Image.open("./ruhua.jpg")
9# 将图片转换成灰度模式
10conv_img = img.convert("L")
11# 获取原图的宽高
12width, height = conv_img.size
13# 设置垂直比例系数
14vscale = 0.5
15# 将图片等比例缩小为原来的四分之一大小
16conv_img = conv_img.resize((int(width * 0.25), int(height * 0.25 * vscale)))
17# 获取缩小之后的图片的宽高
18width, height = conv_img.size
19# 定义一个字符串 字符笔画由复杂到简单
20chars = "@&$%#*+=-. "
21chars_drawing = ""
22for row in range(height):
23 for col in range(width):
24 # 获取图片当前位置的像素灰度值
25 gray = conv_img.getpixel((col,row))
26 # 使用定义好的字符替换相应的灰度值处的图像
27 chars_drawing += chars[int(gray / 255 *10)]
28 chars_drawing += ''
29with open("./ruhua.txt", 'w') as f:
30 f.write(chars_drawing)
完结,撒花,ye~
这才是我的女朋友!
网友评论