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