日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python利用Pillow(PIL)庫(kù)實(shí)現(xiàn)驗(yàn)證碼圖片的全過程

瀏覽:166日期:2022-07-09 10:12:05

前言

Pillow庫(kù)有很多用途,本文使用Pillow來生成隨機(jī)的驗(yàn)證碼圖片。

Pillow的用法參考:https://www.jb51.net/article/196007.htm

驗(yàn)證碼是隨機(jī)的,使用Python內(nèi)置的random庫(kù)來生成隨機(jī)的顏色和隨機(jī)的字符。

random的用法參考:https://www.jb51.net/article/196955.htm

一、驗(yàn)證碼圖片的效果

# coding=utf-8import randomfrom PIL import Image, ImageDraw, ImageFont width, height, font_size, font_num = 300, 100, 48, 5bg_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))image = Image.new(mode=’RGB’, size=(width, height), color=bg_color)draw = ImageDraw.Draw(image, mode=’RGB’)font = ImageFont.truetype('C:WindowsFontsArial.ttf', font_size)verify = str()for i in range(font_num): x = random.randint(i*(width/font_num), (i+1)*(width/font_num)-font_size) y = random.randint(0, height-font_size) char = random.choice([chr(alpha) for alpha in range(65, 91)] + [str(num) for num in range(10)]) verify += char color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) draw.text((x, y), char, fill=color, font=font)print(verify)image.show()

運(yùn)行結(jié)果:

KG7CQ

Python利用Pillow(PIL)庫(kù)實(shí)現(xiàn)驗(yàn)證碼圖片的全過程

二、使用的方法介紹

上面的代碼已經(jīng)實(shí)現(xiàn)了生成隨機(jī)驗(yàn)證碼的功能,現(xiàn)在介紹代碼中用到的函數(shù)和方法。

Image.new(): Image模塊中的new()函數(shù),創(chuàng)建一張圖片(畫布),用于繪圖。傳入3個(gè)參數(shù),畫布的模式(’RGB’表示真彩圖片)、尺寸和顏色,畫布的顏色就是驗(yàn)證碼中的背景顏色。

ImageDraw.Draw(): ImageDraw模塊中的Draw()函數(shù),實(shí)例化一個(gè)ImageDraw類的對(duì)象draw,執(zhí)行繪圖。傳入兩個(gè)參數(shù),畫布和繪圖的模式,畫布使用前面Image.new()創(chuàng)建的畫布,模式繼續(xù)使用’RGB’真彩模式。Draw()函數(shù)會(huì)將傳入的兩個(gè)參數(shù)傳給ImageDraw類,實(shí)例化一個(gè)類對(duì)象并返回,以便后面使用類對(duì)象draw調(diào)用對(duì)應(yīng)的方法執(zhí)行繪圖,使用draw對(duì)象將驗(yàn)證碼中的字符畫在畫布上。

ImageFont.truetype(): ImageFont模塊中的truetype()函數(shù),從字體文件或字體對(duì)象中讀取字體并返回一個(gè)字體對(duì)象。傳入兩個(gè)參數(shù),字體文件(或字體對(duì)象)和字體大小。字體只能使用當(dāng)前電腦支持的字體,在Windows系統(tǒng)中,已安裝的字體一般都保存在C:WindowsFonts文件夾中,如上面代碼中的C:WindowsFontsArial.ttf,應(yīng)該每個(gè)人都默認(rèn)安裝了,在代碼中一定要帶上擴(kuò)展名’.ttf’,否則讀取不到字體文件。如果字體不在WindowsFonts這個(gè)目錄下,可以在控制面板找或直接在所有文件中搜索Fonts。字體大小傳入一個(gè)數(shù)字即可。

Python利用Pillow(PIL)庫(kù)實(shí)現(xiàn)驗(yàn)證碼圖片的全過程

random模塊中的randint()和choice()。在上面的代碼中,randint()用于隨機(jī)生成顏色值,隨機(jī)生成字符在畫布上的x和y坐標(biāo)。choice()用于從26個(gè)大寫字母(chr字符集中65~90為26個(gè)大寫字母)和數(shù)字中隨機(jī)選擇一個(gè)字符。

text(): ImageDraw模塊的ImageDraw類的方法,使用ImageDraw.Draw()返回的類對(duì)象draw來調(diào)用,將字符畫到畫布上。text()方法有12個(gè)參數(shù),并且還可以接收其他的可變參數(shù)和關(guān)鍵字參數(shù),不過只有兩個(gè)必傳參數(shù),上面的代碼中也只傳了4個(gè)參數(shù),所以其他的參數(shù)就不做介紹了。第一個(gè)必傳參數(shù)是xy,傳入一個(gè)元組或列表,表示字符畫到畫布上的位置坐標(biāo)(字符左上角),第二個(gè)必傳參數(shù)是text,傳入一個(gè)字符串,表示需要畫的字符。上面還傳了兩個(gè)參數(shù)fill和font,fill表示字符的顏色,傳入一個(gè)隨機(jī)的顏色,font表示字符的字體,傳入用ImageFont.truetype()函數(shù)返回的字體對(duì)象。

循環(huán)將每次隨機(jī)生成的字符繪畫到畫布上,再使用image對(duì)象的show()方法將圖片顯示出來,隨機(jī)的驗(yàn)證碼圖片就生成成功了。

三、優(yōu)化封裝

import randomfrom PIL import Image, ImageDraw, ImageFont def gen_verified_image(): width, height, font_size, font_num = 400, 150, 48, 4 bg_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) image = Image.new(mode=’RGB’, size=(width, height), color=bg_color) draw = ImageDraw.Draw(image, mode=’RGB’) font = ImageFont.truetype('C:WindowsFontsGadugi.ttf', font_size) verify = str() for i in range(font_num): x = random.randint(i * (width / font_num) + 10, (i + 1) * (width / font_num) - font_size - 10) y = random.randint(20, height - font_size - 20) char = random.choice([chr(a) for a in range(65, 91)] + [chr(b) for b in range(97, 123)] +[str(num) for num in range(10)]) verify += char color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) draw.text((x, y), char, fill=color, font=font) return image, verify if __name__ == ’__main__’: image, verify = gen_verified_image() print(verify) image.show()

運(yùn)行結(jié)果:

qtC7

Python利用Pillow(PIL)庫(kù)實(shí)現(xiàn)驗(yàn)證碼圖片的全過程

驗(yàn)證碼的字體一般不會(huì)使用很容易辨認(rèn)的字體,可以換一個(gè)復(fù)雜一點(diǎn)的。除了大寫字母之外,也可以把小寫字母加進(jìn)來。調(diào)整字符的位置避免畫到畫布的邊緣。將代碼封裝到一個(gè)函數(shù)中,并將image對(duì)象和驗(yàn)證碼字符verify作為返回值,方便調(diào)用時(shí)展示圖片和進(jìn)行驗(yàn)證。

總結(jié)

到此這篇關(guān)于Python利用Pillow(PIL)庫(kù)實(shí)現(xiàn)驗(yàn)證碼圖片的文章就介紹到這了,更多相關(guān)Python用Pillow(PIL)庫(kù)驗(yàn)證碼圖片內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩国产在线观看| 日韩久久精品| 久久亚洲色图| 亚洲一区网站| 亚洲一区中文| 奇米亚洲欧美| 美女毛片一区二区三区四区最新中文字幕亚洲 | 国产欧美亚洲精品a| 国产精品一区二区中文字幕| 国产探花在线精品一区二区| 精品五月天堂| 激情婷婷久久| 日本亚洲不卡| 久久中文欧美| 香蕉精品久久| 日韩免费精品| 国产成人精品三级高清久久91| 韩国精品主播一区二区在线观看 | 麻豆国产一区| 日韩电影免费网址| 日韩午夜精品| 国产精品三级| 国内亚洲精品| 日韩av一区二区在线影视| 精品久久久中文字幕| 日韩欧美一区二区三区在线观看| 欧美日韩在线二区| 亚洲精品极品| av资源亚洲| 亚洲免费专区| 国产美女高潮在线观看| 亚洲综合不卡| 精品网站999| 亚洲欧美不卡| 国产在线观看91一区二区三区 | 久久国产电影| 久久激情五月婷婷| 亚洲高清久久| 美女性感视频久久| 蜜乳av另类精品一区二区| 日韩av中文在线观看| 国产超碰精品| 日韩福利视频导航| 日韩综合精品| 国产精品一卡| 亚洲午夜久久| 亚洲二区免费| 国产成人精品一区二区三区视频| 亚洲一区二区av| 日韩理论视频| 国产情侣一区在线| 国产精品日韩久久久| 成人国产综合| 国产午夜久久av| 男女男精品网站| 欧美13videosex性极品| 国产丝袜一区| 亚洲久久视频| 黄色成人91| 精品亚洲美女网站| 久久99久久久精品欧美| 亚洲精一区二区三区| 亚洲激情婷婷| 999国产精品| 精品久久久久中文字幕小说| 久久国产精品久久久久久电车 | 精品女同一区二区三区在线观看| 亚洲视频国产精品| 99精品视频在线观看免费播放| 国产精品久久乐| 视频国产精品| 视频一区二区中文字幕| 亚洲无线一线二线三线区别av| 欧美韩日一区| 国产一区精品福利| 免费视频一区二区三区在线观看 | 免费一区二区三区在线视频| 日韩av中文字幕一区二区| 亚洲人成亚洲精品| 99国产精品久久久久久久| 久久久精品久久久久久96 | 日本一区免费网站| 蜜芽一区二区三区| 久久高清国产| 亚洲天堂av资源在线观看| 国产模特精品视频久久久久| 欧美精品一线| 国产午夜久久| 日韩制服丝袜av| 免费人成黄页网站在线一区二区| 亚洲作爱视频| 免费国产亚洲视频| 亚洲一区二区网站| 蜜桃视频在线观看一区| 夜久久久久久| 久久国产精品毛片| 亚洲综合福利| 日韩国产欧美一区二区三区| 日韩精选在线| 青青在线精品| 欧美激情三区| 国产精品99视频| 日韩成人亚洲| 亚洲免费黄色| 亚洲最大av| 亚州av日韩av| 日韩av一区二区三区| 欧美亚洲免费| 国产一区一一区高清不卡| 中文在线а√天堂| 国产综合视频| 亚洲一二三区视频| 国产三级一区| 伊人久久在线| 在线 亚洲欧美在线综合一区| 日韩在线一区二区| 91成人精品观看| 国产成人免费av一区二区午夜| 91偷拍一区二区三区精品| 久久三级福利| 亚洲天堂av资源在线观看| 日韩avvvv在线播放| 国产精品视频一区二区三区| 成人在线视频中文字幕| 久久精选视频| 亚洲精品九九| 97精品视频在线看| 国产亚洲永久域名| 国产精品中文字幕亚洲欧美 | 你懂的国产精品| 久久理论电影| 奇米亚洲欧美| 日韩高清成人| 一区二区亚洲视频| 精品中文在线| 亚洲精品小说| 国产精品久久国产愉拍| 久久精品青草| 国产欧美一区二区精品久久久| 电影天堂国产精品| 亚洲精品婷婷| 91精品xxx在线观看| 日韩美女精品| 欧美午夜精品一区二区三区电影| 亚洲精品乱码| 久久久水蜜桃av免费网站| 日韩精品中文字幕一区二区| 欧美成人精品三级网站| 一级成人国产| 国产精品精品| 伊人久久亚洲| 欧美成人a交片免费看| 蜜桃久久精品一区二区| 国产福利91精品一区二区| 日韩精品一区第一页| 91综合视频| 日韩av黄色在线| 欧美在线亚洲| 国产在线观看www| 国产日韩亚洲欧美精品| 亚洲成人精选| 精品视频一区二区三区在线观看 | 日韩不卡免费高清视频| 日韩av中文字幕一区| 久久国产精品成人免费观看的软件| 欧美另类中文字幕| 中文国产一区| 国产精品久久久久av电视剧| 国产伦精品一区二区三区千人斩| 国产视频一区在线观看一区免费| 久久精品国产网站| 美女精品在线| 999国产精品永久免费视频app| 国产精品成人自拍| 亚洲一级大片| 亚洲精品网址| 精品亚洲美女网站| 精品久久福利| 国产精品欧美在线观看| 亚洲人成亚洲精品| 国产一区白浆| av亚洲免费| 日韩精品水蜜桃| 91亚洲国产| 精品国产欧美日韩| 欧美日韩va| 亚洲一区欧美| 在线亚洲欧美| av不卡在线| 日韩亚洲精品在线| 欧美日韩国产探花| 欧美精选一区二区三区| 日韩av福利| 久久久男人天堂| 91日韩欧美| 日韩一区电影| 深夜福利视频一区二区| 97精品一区| 国产亚洲一区二区手机在线观看| 成人国产精品久久|