這篇文章主要講解了“python畫字符畫的實(shí)現(xiàn)原理”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“python畫字符畫的實(shí)現(xiàn)原理”吧!
創(chuàng)新互聯(lián)長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東光企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站建設(shè),東光網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
1.先看效果
原圖是
字符畫
2.實(shí)現(xiàn)原理
其實(shí)原理非常簡(jiǎn)單,首先,要準(zhǔn)備一個(gè)字符集
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
其次,要將圖片轉(zhuǎn)成灰度圖,所謂灰度圖就是黑白照片,這個(gè)過(guò)程中還要縮小圖片,每張圖片縮小的比例都不盡相同,要根據(jù)圖片的實(shí)際情況來(lái)決定,這樣就得到了一張縮小后的黑白照片
im = Image.open('qq.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 轉(zhuǎn)為黑白圖, 每個(gè)像素都一個(gè)灰度值,從0到255, 0是黑色, 255是白色
im.save('t.jpeg') # 保存圖片只是為了演示黑白照片
看起來(lái)有一些丑陋,這張黑白照片一共有80*50個(gè)像素,每個(gè)像素點(diǎn)都可以通過(guò)im.getpixel方法獲得灰度值,這個(gè)值的范圍是從0到255,0是黑色,255是白素,中間就是從黑到白的灰色。
接下來(lái)要做的事情就是把4000個(gè)灰度值轉(zhuǎn)成字符
def get_char(gray):
if gray >= 240:
return ' '
else:
return char_set[int(gray/((256.0 + 1)/len(char_set)))]
灰度值大于240的,我都轉(zhuǎn)成空字符串,這樣看著舒服,其余的,按比例映射到字符集上。
強(qiáng)調(diào)一點(diǎn),生成的txt文件不要打開查看,那樣你看不到一個(gè)完整的字符畫,在瀏覽器里打開字符畫,這樣才可以看到完整的,如果你把縮小的比例再放大一點(diǎn),生成的字符畫就會(huì)失去很多細(xì)節(jié),一般來(lái)說(shuō),寬80就可以了,高度看情況調(diào)整。
3.完整代碼
from PIL import Image
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
im = Image.open('qq.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 轉(zhuǎn)為黑白圖, 每個(gè)像素都一個(gè)灰度值,從0到255, 0是黑色, 255是白色
im.save('t.jpeg')
def get_char(gray):
if gray >= 240:
return ' '
else:
return char_set[int(gray/((256.0 + 1)/len(char_set)))]
text = ''
for i in range(im.height):
for j in range(im.width):
gray = im.getpixel((j, i)) # 返回值可能是一個(gè)int, 也可能是一個(gè)三元組
if isinstance(gray, tuple):
gray = int(0.2126 * gray[0] + 0.7152 * gray[1] + 0.0722 * gray[2])
text += get_char(gray)
text += '\n'
with open('pic.txt', 'w')as f:
f.write(text)
感謝各位的閱讀,以上就是“python畫字符畫的實(shí)現(xiàn)原理”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)python畫字符畫的實(shí)現(xiàn)原理這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
文章名稱:python畫字符畫的實(shí)現(xiàn)原理
地址分享:http://jinyejixie.com/article16/gdpdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、建站公司、外貿(mào)建站、網(wǎng)站排名、企業(yè)網(wǎng)站制作、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)