雖然我PHP教程還沒寫完呢,我昨天試圖寫來著,后來又沒寫。:cry:
我女朋友不知道為啥又生氣了,昨天早上還好著呢,中午就生氣了,到現(xiàn)在我還不知道為什么。:cry:
沒關(guān)系,我長大了,聽一首不可撤銷的 啟程 壓壓驚。 :cry:
我想我今天應(yīng)該做點(diǎn)什么?起床洗頭發(fā),想啊想啊,做這個(gè) python 圖片轉(zhuǎn)字符畫。
簡單介紹一部分,后面貼代碼和效果圖。
- 需要 PIL 庫
pip install pil 安裝了半天安裝不了,但是 pip search pil 確實(shí)搜索到了,找了半天,好像 pillow 和 pil 是一個(gè)東西。
Pillow 是 PIL的對Python3支持的另外一個(gè)分支,當(dāng)然他對Python2也兼容,由于PIL安裝起來比較煩,而使用pip可以很輕松的安裝Pillow,所以我選擇Pillow使用,但是其核心還是PIL庫的。
- 灰度值
灰度值:指黑白圖像中點(diǎn)的顏色深度,范圍一般從0到255,白色為255,黑色為0,故黑白圖片也稱灰度圖像
可以使用灰度值公式將像素的 RGB 值映射到灰度值:
gray = int(0.2126*r+0.7152*g+0.0722*b)
下面是完整的代碼:
# -*- coding: utf-8 -*-
# by opqnext.com, 2017.02.08
from PIL import Image
import argparse
# 接收參數(shù)
parser = argparse.ArgumentParser()
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#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!;:,\"^`'.")
def get_char(r, b, g, 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 = Image.open(IMG)
im = im.resize((WIDTH, HEIGHT), Image.NEAREST)
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'
print txt
然后截取一張效果圖,一目了然,你在做的東西是什么?

pillow.png
魔鏡啊,魔鏡吶,你說...