用python实现图片转字符画(python练手项目[一])

工具

  • Python3.6
  • pillow
    下载pillow(PIL)图像处理库
    pip install pillow



代码块

def get_char(r,g,h,alpha = 256):
	if alpha == 0:
		return " "
	ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
	length = len(ascii_char)
	gray = (2126 * r + 7152 * g + 722 * b)/10000
	x = int ( ( length /( alpha + 1 ) * gray )
	return ascii_char[x]
  • 定义 get_char 函数用来把图片的像素转换为字符

def main(file_name = "test.jpg", width = 80, height = 80, out_file_name = "out_file"):
	text = ''
	im = Image.open(file_name)
	im = im.resize((width,height), Image.NEAREST)
	for i in range(heigt):
		for i in range(width):
			content = im.getpixel ( ( j , i ) ) 
			text += get_char(*content)
		text += "\n"
	print text
			
if __name__ == ’__main__‘:
	main(file_name = "ascii.png")
  • Image.openImage类的open函数打开图片获得一个图片对象,用.resize函数改变图片尺寸。

定义:im.resize(size) ⇒ image
im.resize(size, filter) ⇒ image
含义:返回改变尺寸的图像的拷贝。变量size是所要求的尺寸,是一个二元组:(width, height)。
变量filter为NEAREST、BILINEAR、BICUBIC或者ANTIALIAS之一。如果忽略,或者图像模式为“1”或者“P”,该变量设置为NEAREST。
注意:在当前的版本中bilinear和bicubic滤波器不能很好地适应大比例的下采样(例如生成缩略图)。用户需要使用ANTIALIAS,除非速度比质量更重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值