最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python生成驗證碼圖片代碼分享

 更新時間:2016年01月28日 17:23:54   作者:lxydo  
這篇文章主要為大家介紹了python生成驗證碼圖片代碼,生成原理是將一串隨機產(chǎn)生的數(shù)字或符號,生成一幅圖片,圖片里加上一些干擾象素,想要實現(xiàn)驗證碼圖片的朋友可以參考一下

本文實例為大家分享了python生成驗證碼圖片代碼,分享給大家供大家參考,具體內(nèi)容如下

基本上大家使用每一種網(wǎng)絡(luò)服務(wù)都會遇到驗證碼,一般是網(wǎng)站為了防止惡意注冊、發(fā)帖而設(shè)置的驗證手段。其生成原理是將一串隨機產(chǎn)生的數(shù)字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR)。下面就詳細講解如何生成驗證碼。

所需環(huán)境

除了配置好的python環(huán)境外,還需要配有python中的PIL庫,這是python中專門用來處理圖片的庫。用傳統(tǒng)的pip install 方法或者下載源碼 python setup.py install 方法安裝該庫,很可能會報錯(視運行環(huán)境不同)??梢圆捎孟旅孢@個方法

  • 1.下載安裝包URL,要下載支持全平臺的。
  • 2.解壓縮: tar –zxv –f Imaging-1.1.7.tar.gz
  • 3.進入到解壓后的目錄: cd Imaging-1.1.7
  • 4.Bulid pakage:python setup.py build_ext –i
  • 5.測試:python selftest.py
  • 6.安裝:python setup.py install

代碼實現(xiàn)

要生成驗證碼圖片,我們首先要生成一個隨機字符串,包含26個字母和10個數(shù)字。

#用來隨機生成一個字符串
def gene_text():
 source = list(string.letters)
 for index in range(0,10):
  source.append(str(index))
 return ''.join(random.sample(source,number))#number是生成驗證碼的位數(shù)

然后我們要創(chuàng)建一個圖片,寫入字符串,需要說明的這里面的字體是不同系統(tǒng)而定,如果沒有找到系統(tǒng)字體路徑的話,也可以不設(shè)置

def gene_code():
 width,height = size #寬和高
 image = Image.new('RGBA',(width,height),bgcolor) #創(chuàng)建圖片
 font = ImageFont.truetype(font_path,25) #驗證碼的字體和字體大小
 draw = ImageDraw.Draw(image) #創(chuàng)建畫筆
 text = gene_text() #生成字符串
 font_width, font_height = font.getsize(text)
 draw.text(((width - font_width) / number, (height - font_height) / number),text,\
   font= font,fill=fontcolor) #填充字符串

接下來,我們要在圖片上畫幾條干擾線

#用來繪制干擾線
def gene_line(draw,width,height):
 begin = (random.randint(0, width), random.randint(0, height))
 end = (random.randint(0, width), random.randint(0, height))
 draw.line([begin, end], fill = linecolor)

最后創(chuàng)建扭曲,加上濾鏡,用來增強驗證碼的效果。

 image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR) #創(chuàng)建扭曲
 image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) #濾鏡,邊界加強
 image.save('idencode.png') #保存驗證碼圖片

下面是用上述程序生成的一個驗證碼

下面是完整的代碼:

#coding=utf-8
import random
import string
import sys
import math
from PIL import Image,ImageDraw,ImageFont,ImageFilter

#字體的位置,不同版本的系統(tǒng)會有不同
font_path = '/Library/Fonts/Arial.ttf'
#生成幾位數(shù)的驗證碼
number = 4
#生成驗證碼圖片的高度和寬度
size = (100,30)
#背景顏色,默認為白色
bgcolor = (255,255,255)
#字體顏色,默認為藍色
fontcolor = (0,0,255)
#干擾線顏色。默認為紅色
linecolor = (255,0,0)
#是否要加入干擾線
draw_line = True
#加入干擾線條數(shù)的上下限
line_number = (1,5)

#用來隨機生成一個字符串
def gene_text():
 source = list(string.letters)
 for index in range(0,10):
  source.append(str(index))
 return ''.join(random.sample(source,number))#number是生成驗證碼的位數(shù)
#用來繪制干擾線
def gene_line(draw,width,height):
 begin = (random.randint(0, width), random.randint(0, height))
 end = (random.randint(0, width), random.randint(0, height))
 draw.line([begin, end], fill = linecolor)

#生成驗證碼
def gene_code():
 width,height = size #寬和高
 image = Image.new('RGBA',(width,height),bgcolor) #創(chuàng)建圖片
 font = ImageFont.truetype(font_path,25) #驗證碼的字體
 draw = ImageDraw.Draw(image) #創(chuàng)建畫筆
 text = gene_text() #生成字符串
 font_width, font_height = font.getsize(text)
 draw.text(((width - font_width) / number, (height - font_height) / number),text,\
   font= font,fill=fontcolor) #填充字符串
 if draw_line:
  gene_line(draw,width,height)
 # image = image.transform((width+30,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR) #創(chuàng)建扭曲
 image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR) #創(chuàng)建扭曲
 image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) #濾鏡,邊界加強
 image.save('idencode.png') #保存驗證碼圖片
if __name__ == "__main__":
 gene_code()

以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)python程序設(shè)計有所幫助。

相關(guān)文章

  • 通過Python的filestools庫給圖片添加全圖水印的示例詳解

    通過Python的filestools庫給圖片添加全圖水印的示例詳解

    這篇文章主要介紹了通過Python的filestools庫給圖片添加全圖水印,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • pycharm打包py項目為.exe可執(zhí)行文件的兩種方式

    pycharm打包py項目為.exe可執(zhí)行文件的兩種方式

    本文主要介紹了pycharm打包py項目為.exe可執(zhí)行文件的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python drop()刪除行列的操作方法

    Python drop()刪除行列的操作方法

    這篇文章主要介紹了Python drop()刪除行列的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python獲取百度熱榜鏈接的實例方法

    python獲取百度熱榜鏈接的實例方法

    在本篇文章里小編給大家整理了關(guān)于python獲取百度熱榜鏈接的實例方法,需要的朋友們可以學(xué)習(xí)參考下。
    2020-08-08
  • python實現(xiàn)簡易數(shù)碼時鐘

    python實現(xiàn)簡易數(shù)碼時鐘

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡易數(shù)碼時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Matplotlib實戰(zhàn)之平行坐標系繪制詳解

    Matplotlib實戰(zhàn)之平行坐標系繪制詳解

    平行坐標系是一種統(tǒng)計圖表,它包含多個垂直平行的坐標軸,每個軸表示一個字段,并用刻度標明范圍,下面我們就來看看如何繪制平行坐標系吧
    2023-08-08
  • Python跨平臺路徑格式不一致的處理方法

    Python跨平臺路徑格式不一致的處理方法

    你是不是也遇到過 Python 跨平臺路徑格式不一致的問題?在 Windows、macOS 和 Linux 之間切換時,路徑格式的不同簡直讓人頭疼,今天,我們就來徹底解決這個問題,并告訴你在實際開發(fā)和打包時,哪種方法更好用,需要的朋友跟著小編一起來看看吧
    2025-04-04
  • Python代碼需要縮進嗎

    Python代碼需要縮進嗎

    在本篇文章里小編給大家整理了關(guān)于Python代碼是否需要縮進的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-07-07
  • Mac安裝python3的方法步驟

    Mac安裝python3的方法步驟

    這篇文章主要介紹了Mac安裝python3的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python的pip有什么用

    python的pip有什么用

    在本篇文章里小編給大家整理的是關(guān)于python的pip作用等相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-06-06

最新評論

曲阜市| 遂平县| 上杭县| 互助| 司法| 金塔县| 渑池县| 东阳市| 五河县| 吕梁市| 彰化县| 保亭| 富阳市| 驻马店市| 天门市| 鲁甸县| 临沭县| 沂南县| 古田县| 河东区| 鄯善县| 韩城市| 万载县| 桐梓县| 九台市| 江达县| 寻乌县| 墨玉县| 武义县| 梁平县| 三江| 会宁县| 宜良县| 额济纳旗| 吐鲁番市| 同仁县| 乐安县| 梧州市| 平安县| 武穴市| 敖汉旗|