接單日記(四)驗(yàn)證碼圖片生成-當(dāng)前簡訊
(相關(guān)資料圖)
- 接單日記(四)驗(yàn)證碼圖片生成
- 一、 實(shí)驗(yàn)?zāi)康?/li>
- 二、 實(shí)驗(yàn)內(nèi)容
- 三、 程序及結(jié)果
- 1、 運(yùn)行程序
- 2、 運(yùn)行結(jié)果
接單日記(四)驗(yàn)證碼圖片生成
此為一個(gè)實(shí)驗(yàn)報(bào)告,故遵守實(shí)驗(yàn)報(bào)告的格式。
二、 實(shí)驗(yàn)內(nèi)容
編寫程序,繪制一個(gè)驗(yàn)證碼圖片,要求圖片的背景為白色,同時(shí)該驗(yàn)證碼有隨機(jī)四位字母或者數(shù)字組成,在圖片上還需要有干擾線,可以不需要干擾點(diǎn)。
三、 程序及結(jié)果
1、 運(yùn)行程序
#!/usr/bin/env python# -*- coding: UTF-8 -*-# @author: A.L.Kun# @file: Verification.py# @time: 2023/4/19 15:15from random import choice, randintfrom PIL import Image, ImageDraw, ImageFontclass Verification: """生成驗(yàn)證碼圖片的類""" def __init__(self, n, draw_line, size, font_path, bgcolor, path): self.draw_line = draw_line # 是否添加干擾線 self.n = n # 生成即為驗(yàn)證碼 self.lis_all_code = [] # 存儲(chǔ)獲得的字母和數(shù)字 self.getAllCode() # 調(diào)用方法生成 self.bgcolor = bgcolor # 背景顏色 # print(self.lis_all_code) # 檢測生成的字母和數(shù)字 self.ret = "" # 保存生成的驗(yàn)證碼 self.size = size # 設(shè)置大小 self.font = font_path # 設(shè)置字體 self.save_path = path # 存儲(chǔ)的路徑 def getAllCode(self): """獲得所有字母和數(shù)字,存儲(chǔ)在列表中""" for i in range(48, 58): self.lis_all_code.append(chr(i)) for i in range(65, 91): self.lis_all_code.append(chr(i)) self.lis_all_code.append(chr(i + 32)) def add_line(self, pen): """添加干擾線,要傳入畫筆""" for i in range(randint(4, 8)): # 隨機(jī)生成四到八條干擾線 # 顏色隨機(jī) randColor = (randint(0, 255), randint(0, 255), randint(0, 255)) # 起點(diǎn)隨機(jī) start = (randint(0, self.size[0]), randint(0, self.size[1])) # 終點(diǎn)隨機(jī) end = (randint(0, self.size[0]), randint(0, self.size[1])) # 畫一條線 pen.line([start, end], fill=randColor) def add_point(self, pen): """添加干擾點(diǎn),傳入畫筆""" for i in range(randint(20, 24)): # 生成隨機(jī)個(gè)干擾點(diǎn) # 顏色隨機(jī) randColor = (randint(0, 255), randint(0, 255), randint(0, 255)) # 起點(diǎn)隨機(jī) point = (randint(0, self.size[0]), randint(0, self.size[1])) pen.point(point, fill=randColor) def getImg(self): """獲取驗(yàn)證碼圖片""" img = Image.new("RGBA", self.size, self.bgcolor) # 創(chuàng)建一個(gè)圖片 pen = ImageDraw.Draw(img) # 創(chuàng)建一個(gè)畫筆 font = ImageFont.truetype(self.font, 25) # 實(shí)例化字體 for i in range(self.n): # 把文字寫入圖片中 string = choice(self.lis_all_code) # 生成隨機(jī)的驗(yàn)證碼 self.ret += string # 添加到結(jié)果中 font_color = (randint(0, 255), randint(0, 255), randint(0, 255)) # 顏色隨機(jī) # 驗(yàn)證碼的初始橫軸偏移量 x_start = randint(2, 5) # 驗(yàn)證碼的初始縱軸偏移量 y_start = 0 x = x_start + i * (self.size[0] // self.n) # 獲取每個(gè)字橫坐標(biāo)的位置 y = randint(y_start, self.size[1] // 2) - 3 # 獲取每個(gè)字縱坐標(biāo)的位置 pen.text([x, y], string, font=font, fill=font_color) # 寫入每一個(gè)字 if self.draw_line: # 如果要加干擾點(diǎn)線 self.add_line(pen) self.add_point(pen) return img def main(self): """入口函數(shù)""" img = self.getImg() # 獲取圖片 img.save(self.save_path) # 保存圖片,因?yàn)槔锩嬗兴纳ǖ?,所以要保存為png格式 ret = self.ret self.ret = "" # 重置 self.ret 的值 return ret # 同時(shí)要返回隨機(jī)的字符串if __name__ == "__main__": c = Verification(4, True, (100, 36), r"C:\Windows\Fonts\simfang.ttf", (255, 255, 255), "verify.png") print(c.main())
2、 運(yùn)行結(jié)果
關(guān)鍵詞:
上一篇:港股午評:恒指漲0.14% 鋰電池股走強(qiáng)
下一篇:最后一頁
- 個(gè)人護(hù)理小家電市場結(jié)構(gòu)迎變局 新興渠道規(guī)模不容小覷
- 廣州科技活動(dòng)周進(jìn)入預(yù)熱 明日正式啟動(dòng)300多場主題活動(dòng)接踵而來
- 深化重點(diǎn)領(lǐng)域信用建設(shè) 廣州正式出臺(tái)新型監(jiān)管機(jī)制實(shí)施方案
- 女童不慎掉入20米深井 18歲小姨三次下井成功營救
- 西安3個(gè)區(qū)域12月28日起每日開展全員核酸 官方提倡民眾居家健身
- 浙江樂清一核酸檢測結(jié)果異常人員 復(fù)采復(fù)檢為陰性
- 浙江本輪疫情報(bào)告確診病例490例 提倡“雙節(jié)”非必要不出省
- 西安警方通報(bào)6起涉疫違法案件
- 西安新一輪核酸篩查日檢測能力達(dá)160萬管
- 西安市累計(jì)報(bào)告本土確診病例811例
-
5月15日盤前重要市場新聞|全球熱資訊
>>A股加速優(yōu)勝劣汰投資交易要有確定性邏輯 有人走,有人來,上市公司“有進(jìn)有出”成為資本市場常態(tài)。數(shù)
-
世界即時(shí):舟過安仁古詩翻譯_舟過安仁古詩
1、《舟過安仁》南宋:楊萬里一葉漁船兩小童,收篙停棹坐船中。2、怪生無雨都張傘,不是遮頭是使風(fēng)。3、譯
-
西藏旅游強(qiáng)勁復(fù)蘇
走在拉薩八廓街上,身著帶有濃郁特色的藏裝,畫著精致的妝容,西安游客王莉拍了一組寫真,花了300多元。“
-
環(huán)球快訊:B站公布新專利,可在車載場景下語音發(fā)布彈幕
IT之家5月14日消息,上海嗶哩嗶哩科技有限公司申請的“彈幕處理方法及裝置”專利公布,實(shí)現(xiàn)了在車載場景的
-
一起來看流星雨歌曲插曲有哪些_一起來看流星雨主題曲_世界關(guān)注
1、讓我為你唱首歌演唱:俞灝明、魏晨、朱梓驍、張翰曲:嚴(yán)丹丹、劉佳詞:嚴(yán)丹丹全世界都陪你聽著這是愛你
-
印泥用什么洗能洗干凈(印泥用什么可以清洗掉)-環(huán)球速遞
1、對紅色顏料,可在加苛性鉀的酒精溫液里洗除。但對粘膠纖維織物,只能使用酒精而禁用苛性鉀。2、當(dāng)毛料或
-
申花體育總監(jiān)吳金貴緬懷起了當(dāng)年作為助教與佩特科維奇共事的時(shí)光 焦點(diǎn)熱門
北京時(shí)間今天凌晨,前上海申花主帥伊利亞-佩特科維奇因感染新冠而不幸去世,享年75歲。在接受采訪時(shí),申花
-
漫評CBA:遼寧隊(duì)衛(wèi)冕無懸念
中國青年報(bào)客戶端北京5月14日電(中青報(bào)·中青網(wǎng)記者楊屾)94:68,遼寧男籃5月13日晚以明顯優(yōu)勢再勝浙江男
-
火星全球勘測者探測器_關(guān)于火星全球勘測者探測器介紹 天天熱文
1、“火星全球勘測者”(MarsGlobalSurveyor,MGS)探測器是NASA“火星測繪新計(jì)劃”的首
-
皮劃艇世界杯匈牙利站 中國選手奪得女子雙人劃艇500米冠軍
北京時(shí)間昨天(13日)下午,在2023年皮劃艇靜水世界杯第一站——匈牙利站的爭奪中,中國隊(duì)的徐詩曉、孫夢雅
X 關(guān)閉
接單日記(四)驗(yàn)證碼圖片生成-當(dāng)前簡訊
港股午評:恒指漲0.14% 鋰電池股走強(qiáng)
“北向互換通”正式啟動(dòng)|世界觀速訊
焦點(diǎn)簡訊:滬錫期價(jià)午盤止?jié)q跌超1% 滬鎳漲超4%
X 關(guān)閉
西安警方完成研考安保工作 共出動(dòng)警力逾1.3萬人次
得知西安疫情防控“升級(jí)” 男子夜騎共享單車回咸陽淳化
中國醫(yī)生將任SIU主席背后:從追隨者同行者到引領(lǐng)者
海南省通報(bào)政法隊(duì)伍教育整頓成果