如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫_第1頁(yè)
如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫_第2頁(yè)
如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫_第3頁(yè)
如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫目錄前言:實(shí)例1實(shí)例2

前言:

字符畫:字符畫是一系列字符的組合,我們可以把字符看作是比較大塊的像素,一個(gè)字符能表現(xiàn)一種顏色,字符的種類越多,可以表現(xiàn)的顏色也越多,圖片也會(huì)更有層次感。

如果我們想要手工繪制出字符畫,首先要有扎實(shí)的美術(shù)基礎(chǔ),其次還要花費(fèi)大量的時(shí)間和精力。但是我們可以使用Python,只需要幾行代碼,就能夠?qū)⒁粡垐D片輕而易舉地轉(zhuǎn)化為一個(gè)字符畫。

實(shí)例1

效果圖:

理論很簡(jiǎn)單,就是對(duì)圖片操作,這里需要用到PIL的python包,里面有很好用的圖像處理功能。

先打開(kāi)圖片,把圖像調(diào)整大?。?/p>

img=Image.open(picPath)

img=img.resize((picW,picH))

然后讀取灰度值,再把灰度值和字符對(duì)應(yīng)起來(lái)就行。

fromPILimportImage

lstChars=list("$@B%8WM#*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:\Users\Administrator\Desktop\\aaaaa\\aa.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+='\n'

printtxt

實(shí)例2

下面是源碼:

#-*-coding=utf-8-*-

fromPILimportImage

IMG='IMG.jpg'

#設(shè)置圖片文件

WIDTH=150

#設(shè)置字符畫的寬

HEIGHT=80

#設(shè)置字符畫的高

OUTPUT='T.txt'

#設(shè)置存放字符畫的文本文件

ascii_char=list("$@B%8WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]-_+~i!lI;:,\"^`'.")

#設(shè)置顯示的字符集

#將256灰度映射到70個(gè)字符上

defget_char(r,g,b,alpha=256):

#alpha為透明度

#判斷alpha值,為0表示全透明

ifalpha==0:

return''

#獲取字符集的長(zhǎng)度,這里為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)行如下處理才能將灰度值映射到指定的字符上

#防止當(dāng)灰度值為255時(shí),輸出的第70個(gè)字符超出列表索引,所以需要將(255+1)

unit=(255.0+1)/length

#返回灰度值對(duì)應(yīng)的字符

returnascii_char[int(gray/unit)]

if__name__=='__main__':

#打開(kāi)并調(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)為字符后添加到txt字符串

txt+=get_char(*im.getpixel((j,i)))

#遍歷完一行后需要增加換行符

txt+='\n'

#輸出到屏幕

print(txt)

withopen(OUTPUT,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論