1. 程式人生 > >【python】python圖片轉字符畫

【python】python圖片轉字符畫

python

#知識:
#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("$@B%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)

效果圖

技術分享圖片

本文出自 “孔小發愛吃魚” 博客,謝絕轉載!

【python】python圖片轉字符畫