Python是一種優(yōu)秀的編程語(yǔ)言,最近火了一個(gè)叫做字符畫的小玩意兒,其實(shí)Python可以幫你完成字符畫的轉(zhuǎn)換,下面給大家介紹一下如何使用Python轉(zhuǎn)換字符畫。
#導(dǎo)入pillow庫(kù) from PIL import Image #定義字符集合和灰度值映射關(guān)系 ascii_char = list("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@#$%^&*") #我們可以將256個(gè)灰度值映射到70個(gè)字符上。灰度越低的像素塊所對(duì)應(yīng)的字符的亮度越大 def get_char(r, g, b): 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)] #打開圖片 img = Image.open(r"C:\Users\Public\Pictures\Sample Pictures\123.jpg") #使用resize函數(shù)將圖片進(jìn)行縮放 width, height = img.size img = img.resize((int(width * 0.3), int(height * 0.3)), Image.NEAREST) #將圖片轉(zhuǎn)化成字符畫 txt = "" for i in range(img.size[1]): for j in range(img.size[0]): txt += get_char(*img.getpixel((j, i))) txt += "\n" print(txt) #將轉(zhuǎn)換后的字符畫保存為txt文本 with open("output.txt", "w") as f: f.write(txt)
上述代碼中的get_char
函數(shù)將RGB值轉(zhuǎn)化成對(duì)應(yīng)的字符,其中0.2126、0.7152和0.0722是將RGB轉(zhuǎn)換成灰度值的比例系數(shù),而unit
則是將256個(gè)灰度值映射到70個(gè)字符的單位值。
在使用resize
函數(shù)將圖片進(jìn)行縮放后,我們可以按照一定的順序遍歷每個(gè)像素個(gè)點(diǎn),獲取像素點(diǎn)的RGB值,并將其轉(zhuǎn)換成字符。 接著將轉(zhuǎn)換后的字符畫保存到output.txt
文件,即可完成字符畫的轉(zhuǎn)換。