如何用Python將圖片轉(zhuǎn)為字符畫(huà)
今天打算玩?zhèn)€好玩的,也是基于一個(gè)優(yōu)秀的圖像處理庫(kù)——PIL,使用ascii字符把圖片轉(zhuǎn)為黑白字符畫(huà)。
首先有個(gè)問(wèn)題,就是模擬灰度,這里有個(gè)公式:
1 | Gray = 0.2126 × R + 0.7152 × G + 0.0722 × B |
這樣就好辦了。當(dāng)然,RGB模式下,256x256x256的顏色范圍雖然被轉(zhuǎn)換成了256的灰度范圍,字符還是不好一一對(duì)應(yīng)。我們可以使用一個(gè)字符對(duì)應(yīng)多個(gè)灰度的方式來(lái)解決。
記得要先安裝PIL庫(kù),其中:
如果是Python 2,運(yùn)行 pip install PIL。
如果是Python 3,運(yùn)行 pip install pillow。
接下來(lái)直接上代碼吧:
from PIL import Image
#設(shè)置顯示的字符集
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
WIDTH = 130
HEIGHT = 50
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 = (255.0 + 1)/length
return ascii_char[int(gray/unit)]
if __name__ == '__main__':
img = "E:/WindowsDocuments/G7/Desktop/1.png"
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)如果想要輸出到文件,可以在定義的部分,加上想要保存的文件名 OUTPUT = 'output.txt',然后在最后寫(xiě)進(jìn)去:
with open(OUTPUT, 'w') as f:
f.write(txt)最后,我們得到了這個(gè):

到此這篇關(guān)于如何用Python將圖片轉(zhuǎn)為字符畫(huà)的文章就介紹到這了,更多相關(guān)用Python將圖片轉(zhuǎn)為字符畫(huà)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬蟲(chóng) 模擬登錄人人網(wǎng)過(guò)程解析
這篇文章主要介紹了python爬蟲(chóng) 模擬登錄人人網(wǎng)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
詳解Python自動(dòng)化之文件自動(dòng)化處理
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python文件自動(dòng)化處理展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python3學(xué)習(xí)urllib的使用方法示例
本篇文章主要介紹了Python3學(xué)習(xí)urllib的使用方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
基于Python在MacOS上安裝robotframework-ride
今天小編就為大家分享一篇關(guān)于基于Python在MacOS上安裝robotframework-ride,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
python創(chuàng)建學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python創(chuàng)建學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
python數(shù)據(jù)批量寫(xiě)入ScrolledText的優(yōu)化方法
今天小編就為大家分享一篇python數(shù)據(jù)批量寫(xiě)入ScrolledText的優(yōu)化方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python按照l(shuí)ist中字典的某key去重的示例代碼
這篇文章主要介紹了python按照l(shuí)ist中字典的某key去重的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Python+PyQt5實(shí)現(xiàn)多屏幕協(xié)同播放功能
在現(xiàn)代會(huì)議展示、數(shù)字廣告、展覽展示等場(chǎng)景中,多屏幕協(xié)同播放已成為剛需,下面我們就來(lái)看看如何利用Python和PyQt5開(kāi)發(fā)一套功能強(qiáng)大的跨屏播控系統(tǒng)吧2025-03-03
Python實(shí)現(xiàn).gif圖片拆分為.png圖片的簡(jiǎn)單示例
有時(shí)候需要把GIF圖片分解成一張一張的靜態(tài)圖,jpg或者png格式,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn).gif圖片拆分為.png圖片的相關(guān)資料,需要的朋友可以參考下2023-01-01

