pythonpython图片转字符画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pythonpython图片转字符画相关的知识,希望对你有一定的参考价值。

#知识:
#1)pillow:对图像进行处理
#im = Image.open(IMG)  打开图像
#im.resize 设置图像大小
#Image.NEAREST 设置图像质量,最低质量
#im.getpixel 返回给定位置的像素值

#2)argparse:命令行参数处理:说白了就是定义脚本后面跟的参数,可以自动解析出来
##创建解析对象
#parser = argparse.ArgumentParser()

#add_argument:添加需要关注的命令行参数
#parser.add_argument(‘file‘) #输入文件
#args = parser.parse_args() #获取参数

#PIL使用的是pillow库,需安装;处理图像
from PIL import Image

#系统自带,处理命令行参数
import argparse

#创建解析对象
parser = argparse.ArgumentParser()

#add_argument:添加需要关注的命令行参数
parser.add_argument(‘file‘) #输入文件
parser.add_argument(‘-o‘,‘--output‘)  #输出文件
parser.add_argument(‘--width‘,type = int,default=80)  #输出字符画款
parser.add_argument(‘--height‘,type = int,default = 80) #输出字符画高

args = parser.parse_args() #获取参数

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output


ascii_char = list("[email protected]%8&WM#*oahkbdpqwm")

#将256个灰度映射到10个字符上
def get_char(r,g,b,alpha = 256):
	if alpha == 0:
		return ‘ ‘
	length = len(ascii_char)
	gray = int(0.2126*r + 0.7152*g +0.0722*b)

	unit = (256.0+1)/length
	return ascii_char[int(gray/unit)]

if __name__ == ‘__main__‘:
	
	#打开图像对象
	#im.mode 图片模式  im.size 图片尺寸
	im = Image.open(IMG)
	#resize:设置图像大小;Image.NEAREST:设置图像质量,最低质量
	im = im.resize((WIDTH,HEIGHT),Image.NEAREST)  

	txt = ""

	for i in range(HEIGHT):
		for j in range(WIDTH):
			#im.getpixel返回给定位置的像素值
			txt += get_char(*im.getpixel((j,i)))
		txt += ‘\n‘

	print txt

	if OUTPUT:
		with open(OUTPUT,‘w‘) as f:
			f.write(txt)
	else:
		with open("output.txt",‘w‘) as f:
			f.write(txt)

效果图

技术分享图片

本文出自 “孔小发爱吃鱼” 博客,谢绝转载!

以上是关于pythonpython图片转字符画的主要内容,如果未能解决你的问题,请参考以下文章

python图片转字符画

Python写实用小工具-实现图片转字符画

自制图片转字符工具(图片转字符画工具)

图片转字符画

图片转ascii网站(图像转字符图片转字符字符画字符图图像转ascii)

图片转ascii网站(图像转字符图片转字符字符画字符图图像转ascii)