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

您的位置:首頁技術文章
文章詳情頁

Python利用Pillow(PIL)庫實現驗證碼圖片的全過程

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

前言

Pillow庫有很多用途,本文使用Pillow來生成隨機的驗證碼圖片。

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

驗證碼是隨機的,使用Python內置的random庫來生成隨機的顏色和隨機的字符。

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

一、驗證碼圖片的效果

# 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()

運行結果:

KG7CQ

Python利用Pillow(PIL)庫實現驗證碼圖片的全過程

二、使用的方法介紹

上面的代碼已經實現了生成隨機驗證碼的功能,現在介紹代碼中用到的函數和方法。

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

ImageDraw.Draw(): ImageDraw模塊中的Draw()函數,實例化一個ImageDraw類的對象draw,執行繪圖。傳入兩個參數,畫布和繪圖的模式,畫布使用前面Image.new()創建的畫布,模式繼續使用’RGB’真彩模式。Draw()函數會將傳入的兩個參數傳給ImageDraw類,實例化一個類對象并返回,以便后面使用類對象draw調用對應的方法執行繪圖,使用draw對象將驗證碼中的字符畫在畫布上。

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

Python利用Pillow(PIL)庫實現驗證碼圖片的全過程

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

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

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

三、優化封裝

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()

運行結果:

qtC7

Python利用Pillow(PIL)庫實現驗證碼圖片的全過程

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

總結

到此這篇關于Python利用Pillow(PIL)庫實現驗證碼圖片的文章就介紹到這了,更多相關Python用Pillow(PIL)庫驗證碼圖片內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久中文字幕二区| 香蕉成人av| 中文字幕一区久| 免费在线亚洲欧美| 日韩中出av| 亚洲精品激情| 欧美亚洲自偷自偷| 亚洲3区在线| 男人的天堂久久精品| 性色一区二区| 亚洲香蕉网站| 国产亚洲久久| 国产精品免费大片| 日韩精品中文字幕第1页| 国产福利片在线观看| 荡女精品导航| 91精品成人| 亚洲毛片在线| 日韩高清不卡一区| av免费不卡国产观看| 欧美日韩在线二区| 亚洲高清影视| 日本午夜精品| 亚洲精品91| 国产日产精品一区二区三区四区的观看方式| 日本亚洲不卡| 欧美成人aaa| 99香蕉国产精品偷在线观看 | 91嫩草精品| se01亚洲视频| 日本免费新一区视频| 99久精品视频在线观看视频| 久久精品av| 婷婷精品进入| 老牛国内精品亚洲成av人片| 欧美在线亚洲| 成人日韩在线观看| 国产一区二区三区免费在线 | 中文av在线全新| 国产成人77亚洲精品www| 精品免费视频| 国产va在线视频| 红杏一区二区三区| 日韩一区二区三区高清在线观看| 日本综合视频| 日韩av二区在线播放| 亚洲一区欧美| 久久xxxx精品视频| 亚洲一区二区三区四区电影| 日韩久久电影| 国产一区久久| 国产日本亚洲| 成人国产精品久久| 国产精品日本一区二区不卡视频| 亚洲一区成人| 肉色欧美久久久久久久免费看 | 国产精品欧美一区二区三区不卡 | 青草av.久久免费一区| 国产精品mv在线观看| 久久精品国产网站| 欧美成人综合| 视频一区视频二区中文| 日韩有码av| 桃色一区二区| 麻豆精品国产91久久久久久| 夜久久久久久| 精品久久久中文字幕| 亚洲一区欧美二区| 亚洲精品婷婷| 中文日韩在线| 国产精品99视频| 婷婷五月色综合香五月| 亚洲精品.com| 欧美精品第一区| 久久国产免费看| 不卡中文字幕| 国产精品精品| 国产精品一区二区三区av| 日韩二区三区在线观看| 在线观看亚洲精品福利片| 久久视频精品| 日韩欧美2区| 蜜桃久久久久久| 亚洲欧美日韩国产一区| 亚洲日本久久| 午夜亚洲福利在线老司机| 蜜桃视频欧美| 国产精品白丝一区二区三区| 国产精品最新| 在线成人直播| 亚洲日本在线观看视频| 午夜国产一区二区| 国产亚洲观看| 日韩精品福利一区二区三区| 久久亚洲国产| 日韩高清不卡| 在线观看精品| 亚洲精品永久免费视频| 黄色亚洲在线| 国产精品久久久网站| 91麻豆精品| 亚洲黄色影院| 国产免费av一区二区三区| 亚洲精品影院在线观看| 91欧美日韩在线| 国产极品模特精品一二| 日韩中文欧美在线| 亚洲一区二区免费在线观看| 香蕉久久精品| 亚洲激情另类| 国产精品免费看| 在线视频日韩| 久久亚洲不卡| 91精品精品| 免费观看在线综合色| 久久高清国产| 欧美激情亚洲| 欧美成人精品午夜一区二区| 91精品国产自产精品男人的天堂| 精品国产亚洲日本| 日韩av电影一区| 特黄毛片在线观看| 正在播放日韩精品| 好吊一区二区三区| 中文日韩在线| 四虎国产精品免费观看| 亚洲国产综合在线看不卡| 亚洲高清二区| 亚洲精品美女| 在线看片一区| 欧美黄色精品| 久久av一区| 香蕉久久国产| 精品国产美女a久久9999| 精品三级在线观看视频| 亚洲在线网站| 亚洲精品影视| 免费污视频在线一区| 国产综合激情| 青青久久av| 91精品美女| 日韩在线短视频| 蜜桃av一区二区三区电影| 亚洲综合婷婷| 国产精品18| 综合五月婷婷| 欧美91视频| 成人久久一区| 欧美午夜三级| 韩日一区二区三区| 国产suv精品一区二区四区视频| 亚洲视频国产| 免费国产亚洲视频| 久久九九国产| 免费在线欧美视频| 国产精品永久| 色综合视频一区二区三区日韩 | 欧美在线亚洲综合一区| 亚洲一区有码| 国精品产品一区| 亚洲大片在线| 日韩欧美午夜| 成人av动漫在线观看| 欧美一区二区三区激情视频| 日本不良网站在线观看| 国产精品毛片久久久| 日本不卡视频在线| 最新亚洲激情| 9国产精品视频| 日韩中文影院| 国产日韩综合| 日本精品另类| 欧美经典一区| 日韩精品一级二级| 亚洲毛片一区| 国产精品调教| 日韩欧美一区二区三区在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 蜜桃精品在线| 国产精品av一区二区| 国产日产精品_国产精品毛片 | 久久久久国产一区二区| 亚洲一区观看| 亚洲爱爱视频| 日本蜜桃在线观看视频| 一区免费在线| www.com.cn成人| 免费日韩一区二区三区| 亚洲天堂1区| 日韩欧美精品| 中文一区一区三区免费在线观| 欧美片第1页| 激情综合自拍| 在线成人动漫av| 免费成人网www| 国产精品xxx在线观看| 首页国产欧美日韩丝袜| 亚洲精品乱码| 国产69精品久久| 欧美日韩水蜜桃|