国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 模擬生成動(dòng)態(tài)產(chǎn)生驗(yàn)證碼圖片的方法

2020-02-15 21:28:26
字體:
供稿:網(wǎng)友

模擬動(dòng)態(tài)產(chǎn)生驗(yàn)證碼圖片

模擬生成驗(yàn)證碼,首先要做的是生成隨機(jī)的字母,然后對(duì)字母進(jìn)行模糊處理。這里介紹一下 Python 提供的 Pillow 模塊。

Pillow

PIL:Python Image Library,Python 的圖像處理標(biāo)準(zhǔn)庫,功能強(qiáng)大。

PIL 是第三方庫,使用之前需要先進(jìn)行安裝。具體的命令如下:(如果安裝了 Anaconda,這一步可以跳過)

$ pip install pillow

下面先簡(jiǎn)單介紹 Pillow 的功能。

操作圖像

縮放圖像,是 Pillow 的一個(gè)功能,示例如下:

from PIL import Image# 打開圖片,注意路徑img = Image.open('pitbull.jpeg')# 獲得圖片尺寸weight, height = img.sizeprint('原圖片尺寸:{}x{}'.format(weight, height))# 進(jìn)行縮放,縮放 50%img.thumbnail((weight//2, height//2))print('調(diào)整后的圖片尺寸:{}x{}'.format(weight//2, height//2))# 將縮放后的圖片保存img.save('thumbnail.jpg', 'jpeg')

Pillow 還有其他的功能,例如旋轉(zhuǎn),剪切,濾鏡,輸出文字,調(diào)色板等。

ImageFilter

下面嘗試模糊圖片處理:

from PIL import Image,ImageFilter# 打開圖片文件,注意路徑img = Image.open('pitbull.jpeg')# 應(yīng)用模糊濾鏡img2 = img.filter(ImageFilter.BLUR)img2.save('blur.jpg', 'jpeg')

ImageFilter 是 Python 提供的圖像濾波,而 ImageFilter.BLUR 是模糊濾波。

上面代碼具體的效果如下:

ImageDraw

同時(shí) Pillow 的 ImageDraw 提供了一些列繪圖方法,使我們可以直接繪圖。下面使用這種方法來嘗試生成字母驗(yàn)證碼圖片:

# -*- coding: utf-8 -*-'''@File: generate_random_code.py@Time: 2020/01/31 20:32:10@Author: 大夢(mèng)三千秋@Contact: yiluolion@126.com'''# Put the import lib herefrom random import randint, choicefrom PIL import Image, ImageDraw, ImageFont, ImageFilterdef rnd_chr(chr_set):  '''獲取隨機(jī)字符  Args:    chr_set: 擬定生成的字符集  Returns:    返回隨機(jī)字符  '''  return choice(chr_set)def rnd_bg_color():  '''獲取隨機(jī)像素值,填充背景  Returns:    返回隨機(jī)像素值,返回元組類型  '''  return (randint(97, 255), randint(97, 255), randint(97, 255))def rnd_chr_color():  '''獲取隨機(jī)像素,填充輸出字符  Returns:    返回隨機(jī)像素值,返回元組類型  '''  # 與畫板填充色進(jìn)行一定的錯(cuò)開,防止完全覆蓋  return (randint(32, 96), randint(32, 96), randint(32, 96))def main():  # 生成字符集  chr_set = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']  for i in range(65, 91):    chr_set.append(chr(i))  for j in range(97, 123):    chr_set.append(chr(j))  # print(chr_set)  # 定義畫板規(guī)格 250 x 50  width = 60 * 5  height = 60  # 創(chuàng)建 Image 對(duì)象,白底畫板  image = Image.new('RGB', (width, height), (255, 255, 255))  # 創(chuàng)建 Draw 對(duì)象  draw = ImageDraw.Draw(image)  # 創(chuàng)建 Font 對(duì)象  font = ImageFont.truetype('./consola.ttf', 36)  # 填充畫板  for x in range(width):    for y in range(height):      draw.point((x, y), fill=rnd_bg_color())  # 填充文字  for n in range(5):    draw.text((60 * n + 25, 12), rnd_chr(chr_set), fill=rnd_chr_color(), font=font)    # 對(duì)圖像內(nèi)容進(jìn)行模糊后存儲(chǔ)  image = image.filter(ImageFilter.BLUR)  image.save('./random_code.jpg', 'jpeg')if __name__ == "__main__":  main()            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灌云县| 遂昌县| 正阳县| 铜川市| 屏东市| 达州市| 阿拉善左旗| 马尔康县| 宁武县| 西昌市| 西宁市| 醴陵市| 合山市| 资阳市| 隆安县| 金乡县| 兴仁县| 新巴尔虎右旗| 章丘市| 闽侯县| 天镇县| 万宁市| 大城县| 临武县| 虎林市| 旺苍县| 报价| 建宁县| 平阴县| 当阳市| 汉源县| 中方县| 襄城县| 上蔡县| 怀安县| 波密县| 来宾市| 张北县| 连州市| 铜鼓县| 渝中区|