本文關(guān)鍵闡述了如何運(yùn)用python完成圖片轉(zhuǎn)化字符畫,文章內(nèi)容緊扣主題進(jìn)行詳盡的基本介紹,具有很強(qiáng)的實(shí)用價(jià)值,必須的朋友可以學(xué)習(xí)一下
序言:
字符畫:字符畫是一連串標(biāo)識符的搭配,也可以把標(biāo)識符看作較為大塊清晰度,一個(gè)字節(jié)能主要表現(xiàn)一個(gè)顏色,標(biāo)識符的類型越大,能夠表現(xiàn)得色調(diào)也就越多,照片還會更有層次感。
假如他們想要手工制作制作出字符畫,必須要有過硬的美術(shù)基礎(chǔ)知識,次之還需要耗費(fèi)大量時(shí)間和精力。但我們可以應(yīng)用Python,只需兩行編碼,就可以將一張照片輕而易舉的轉(zhuǎn)化成1個(gè)字符畫。
案例1
設(shè)計(jì)效果圖:
基礎(chǔ)理論非常簡單,便是對圖片實(shí)際操作,這兒需要使用PIL的python包,里有非常好用的數(shù)字圖像處理作用。
先打開圖,把圖象修改尺寸:
img=Image.open(picPath) img=img.resize((picW,picH))
隨后載入灰度級,然后把灰度級和標(biāo)識符相匹配下去就可以了。
fromPILimportImage lstChars=list("$B%8&WM#*oahkbdpqwmZO0QLaCJUYXzczjhdhsdavunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'.") defoneChars(r,g,b,alpha=256): globallstChars length=len(lstChars) gray=int(0.2126*r+0.7152*g+0.722*b) index=length*gray returnlstChars[index] picPath="C:UsersAdministratorDesktopaaaaaaa.png" picH=40 picW=80 img=Image.open(picPath) img=img.resize((picW,picH)) txt="" foryinrange(picH): forxinrange(picW): txt+=oneChars(img.getpixel((x,y))) txt+=' ' printtxt
案例2
以下是源代碼:
#-*-coding=utf-8-*- fromPILimportImage IMG='IMG.jpg'#設(shè)置圖片文檔 WIDTH=150#設(shè)置字符畫的寬 HEIGHT=80#設(shè)置字符畫的高 OUTPUT='T.txt'#設(shè)置存放字符畫的文本文件 ascii_char=list("$B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'.")#設(shè)置顯示的字符集 #將256灰度映射到70個(gè)字符上 defget_char(r,g,b,alpha=256): #alpha為透明度 #判斷alpha值,為0表示全透明 ifalpha==0: return'' #獲取字符集的長度,這兒為70 length=len(ascii_char) #將RGB值轉(zhuǎn)為灰度級gray,灰度級范圍為0-255 gray=int(0.2126*r+0.7152*g+0.0722*b) #灰度級范圍為0-255,而字符集只有70 #需要進(jìn)行如下處理才能將灰度級映射到指定的標(biāo)識符上 #防止當(dāng)灰度級為255時(shí),輸出的第70個(gè)字符超出列表索引,所以需要將(255+1) unit=(255.0+1)/length #返回灰度級對應(yīng)的標(biāo)識符 returnascii_char[int(gray/unit)] if__name__=='__main__': #打開并調(diào)整圖片的寬和高 im=Image.open(IMG) im=im.resize((WIDTH,HEIGHT),Image.NEAREST) #初始化輸出的字符串 txt="" #遍歷圖片中的每一行 foriinrange(HEIGHT): #遍歷該行中的每一列 forjinrange(WIDTH): #將(j,i)坐標(biāo)的RGB清晰度轉(zhuǎn)為標(biāo)識符后添加到txt字符串 txt+=get_char(*im.getpixel((j,i))) #遍歷完一行后需要增加換行符 txt+=' ' #輸出到屏幕 print(txt) withopen(OUTPUT,'w')asf: f.write(txt)
同時(shí)黏貼就可以,只需在文件夾中導(dǎo)進(jìn)1張圖片重命名為IMG.jpg。運(yùn)作最后會形成1個(gè)名叫T.txt的文檔。
原照:
生成文件圖
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130257.html
本文關(guān)鍵闡述了運(yùn)用Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫,要把圖片轉(zhuǎn)字符畫,必須要先界定1個(gè)字段名,用于和灰度級做投射,將照片每一個(gè)象素的RGB值轉(zhuǎn)化成1個(gè)灰度級,把它相對應(yīng)的標(biāo)識符導(dǎo)出就得到了字符畫 序言 相信大家在網(wǎng)上常??吹接行┤苏宫F(xiàn)出各種各樣字符畫,對于這些色彩斑斕的全球而言,我們平時(shí)看到的就是某些超清的彩色圖片,有時(shí)候再來一個(gè)粗糙黑白字符畫,還是比較緩解疲勞的。喜愛不要忘記個(gè)人收藏、關(guān)心、...
摘要:文章鏈接關(guān)于圖片轉(zhuǎn)字符畫,相信大家都不陌生,經(jīng)常出現(xiàn)在個(gè)超有趣的項(xiàng)目中。今天我也來實(shí)踐這個(gè)有趣的項(xiàng)目,更進(jìn)一步的是把這個(gè)功能做成一個(gè)在線的網(wǎng)站,直接上傳圖片生成字符畫,在線預(yù)覽可以讓更多的人來體驗(yàn)。至此,生成字符畫的腳本完成了。 文章鏈接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw 關(guān)于python圖片轉(zhuǎn)字符畫,相信大家都不陌生...
摘要:字符畫大家一定非常熟悉了,那么如何把一張現(xiàn)有的圖片轉(zhuǎn)成字符畫呢讓這個(gè)可能變成了現(xiàn)實(shí),通過,可以很輕松實(shí)現(xiàn)這個(gè)功能。我們只能根據(jù)圖片寬高,來定義一個(gè)間隔,橫向間隔,縱向間隔取一次像素,這樣可以保證生成的字符畫大小和原圖保持一致。 showImg(http://segmentfault.com/img/bVbtCk); 猛點(diǎn) 這里 看高清妹子圖。 字符畫大家一定非常熟悉了,那么如何把一...
摘要:將程序包裝在界面里,可以將輸入通過多種途徑如文本框彈出路徑選擇等輸入到程序里。將輸出通過文本框顯示出來將執(zhí)行信息如如報(bào)錯(cuò)信息運(yùn)行進(jìn)度通過文本框或進(jìn)度條顯示出來文章安排先介紹安裝和配合的使用。 作為一個(gè)程序的開發(fā)者,我們僅僅需要在相應(yīng)路徑通過命令行就可執(zhí)行那個(gè)程序。但是,不懂行的人不理解這個(gè)黑框框的東西,陌生領(lǐng)域任何人都沒有安全感,所以他們是拒絕接受一個(gè)項(xiàng)目僅僅只是通過一個(gè)黑框框來執(zhí)行的...
pythonsklearn:教你如何畫出決策書,并保存為PDF的實(shí)現(xiàn)過程 這篇文章主要介紹了pythonsklearn畫出決策樹并保存為PDF的實(shí)現(xiàn)過程,這篇文章具有很高的參考價(jià)值,希望各位讀者可以認(rèn)真仔細(xì)的閱讀。 利用sklearn畫出決策樹并保存為PDF 下載Graphviz 進(jìn)入官網(wǎng)下載并安裝: https://graphviz.gitlab.io/_pages/Do...
閱讀 909·2023-01-14 11:38
閱讀 876·2023-01-14 11:04
閱讀 739·2023-01-14 10:48
閱讀 1980·2023-01-14 10:34
閱讀 941·2023-01-14 10:24
閱讀 818·2023-01-14 10:18
閱讀 498·2023-01-14 10:09
閱讀 571·2023-01-14 10:02