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

python PIL模塊與隨機生成中文驗證碼

 更新時間:2016年02月27日 23:27:18   投稿:mdxy-dxy  
今天我們要學習的內(nèi)容是如何利用Python生成一個隨機的中文驗證碼,并將圖片保存為.jpeg格式,需要的朋友可以參考下

在這之前,你首先得了解Python中的PIL庫。PIL是Python Imaging Library的簡稱,PIL是一個Python處理圖片的庫,提供了一系列模塊和方法,比如:裁切,平移,旋轉(zhuǎn),改變尺寸等等。在PIL庫中,任何一個圖像都是用Image對象來表示的,所以要加載一張圖片,最簡單的形式如下:

from PIL import Image
image = Image.open("1.jpeg")

在PIL庫中,最常用的模塊有Image,ImageDraw,ImageEnhance,ImageFile等。
PIL的下載地址為:http://www.pythonware.com/products/pil/
接下來學習PIL中一些常見的操作:

(1)改變圖片大小

from PIL import Image

image = Image.open("1.jpeg")
new_img = image.resize((256,256),Image.BILINEAR)
new_img.save("2.jpeg")

(2)旋轉(zhuǎn)圖片

from PIL import Image

image = Image.open("1.jpeg")
new_img = image.rotate(45)
new_img.save("2.jpeg")

(3)直線繪制

PIL庫中的ImageDraw模塊提供了圖形繪制的基本功能,可以繪制直線,弧線,橢圓,矩形等等。

from PIL import Image,ImageDraw

image = Image.open("2.jpeg")
draw = ImageDraw.Draw(image)
width,height = image.size
draw.line(((0,0),(width-1,height-1)),fill=255)
draw.line(((0,height-1),(width-1,0)),fill=255)
image.save("2.jpeg")

(4)繪制圓

from PIL import Image,ImageDraw

image = Image.open("2.jpeg")
draw = ImageDraw.Draw(image)
width,height = image.size
draw.arc((0,0,width-1,height-1),0,360,fill=255)
image.save("2.jpeg")

更多方法可以參見幫助文檔。

現(xiàn)在我們來研究利用Python如何生成中文驗證碼。其實這個問題簡單,我們都知道驗證碼一般是用來防止網(wǎng)絡機器

人采用無限次數(shù)的登錄嘗試破解密碼,那么我們需要對這張圖片隨機生成中文字符來驗證,一般來說會把圖片的字表

現(xiàn)得很模糊,這樣有效地防止機器人識別。所以我們除了要隨機生成漢字,還要加入一些干擾線條等等。

# -*- coding: utf-8 -*-
from PIL import Image,ImageDraw,ImageFont
import random
import math, string 

class RandomChar():
 @staticmethod
 def Unicode():
  val = random.randint(0x4E00, 0x9FBF)
  return unichr(val) 

 @staticmethod
 def GB2312():
  head = random.randint(0xB0, 0xCF)
  body = random.randint(0xA, 0xF)
  tail = random.randint(0, 0xF)
  val = ( head << 8 ) | (body << 4) | tail
  str = "%x" % val
  return str.decode('hex').decode('gb2312') 

class ImageChar:
 def __init__(self, fontColor = (0, 0, 0),
           size = (100, 40),
           fontPath = 'SIMSUN.TTC',
           bgColor = (255, 255, 255),
           fontSize = 20):
  self.size = size
  self.fontPath = fontPath
  self.bgColor = bgColor
  self.fontSize = fontSize
  self.fontColor = fontColor
  self.font = ImageFont.truetype(self.fontPath, self.fontSize)
  self.image = Image.new('RGB', size, bgColor) 

 def rotate(self):
  self.image.rotate(random.randint(0, 30), expand=0) 

 def drawText(self, pos, txt, fill):
  draw = ImageDraw.Draw(self.image)
  draw.text(pos, txt, font=self.font, fill=fill)

 def randRGB(self):
  return (random.randint(0, 255),
      random.randint(0, 255),
      random.randint(0, 255)) 

 def randPoint(self):
  (width, height) = self.size
  return (random.randint(0, width), random.randint(0, height)) 

 def randLine(self, num):
  draw = ImageDraw.Draw(self.image)
  for i in range(0, num):
   draw.line([self.randPoint(), self.randPoint()], self.randRGB())

 def randChinese(self, num):
  gap = 5
  start = 0
  for i in range(0, num):
   char = RandomChar().GB2312()
   x = start + self.fontSize * i + random.randint(0, gap) + gap * i
   self.drawText((x, random.randint(-5, 5)), RandomChar().GB2312(), self.randRGB())
   self.rotate()
  self.randLine(18) 

 def save(self, path):
  self.image.save(path)

ic = ImageChar(fontColor=(100,211, 90))
ic.randChinese(4)
ic.save("1.jpeg")

運行結(jié)果:

相關文章

  • 如何解決Pycharm運行報錯No Python interpreter selected問題

    如何解決Pycharm運行報錯No Python interpreter selected

    這篇文章主要介紹了如何解決Pycharm運行時No Python interpreter selected問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • python實現(xiàn)在每個獨立進程中運行一個函數(shù)的方法

    python實現(xiàn)在每個獨立進程中運行一個函數(shù)的方法

    這篇文章主要介紹了python實現(xiàn)在每個獨立進程中運行一個函數(shù)的方法,涉及Python操作進程的相關技巧,需要的朋友可以參考下
    2015-04-04
  • Python鏈式調(diào)用數(shù)據(jù)處理實際應用實例探究

    Python鏈式調(diào)用數(shù)據(jù)處理實際應用實例探究

    本文將深入介紹Python鏈式調(diào)用的概念、原理以及實際應用,通過豐富的示例代碼,幫助讀者更全面地理解和應用這一編程技巧
    2024-01-01
  • Python pyside6編寫一個廣告圖片生成器

    Python pyside6編寫一個廣告圖片生成器

    這篇文章主要為大家詳細介紹了Python如何使用pyside6編寫一個廣告圖片生成器,可以快速制作包含產(chǎn)品圖片和文字的廣告圖片,需要的可以參考下
    2025-01-01
  • python機器學習庫scikit-learn:SVR的基本應用

    python機器學習庫scikit-learn:SVR的基本應用

    這篇文章主要介紹了python機器學習庫scikit-learn:SVR的基本應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • mac安裝python3后使用pip和pip3的區(qū)別說明

    mac安裝python3后使用pip和pip3的區(qū)別說明

    這篇文章主要介紹了mac安裝python3后使用pip和pip3的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 在Django的URLconf中使用命名組的方法

    在Django的URLconf中使用命名組的方法

    這篇文章主要介紹了在Django的URLconf中使用命名組的方法,Django是Pyhton各色高人氣開發(fā)框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • CPython 垃圾收集器檢測循環(huán)引用詳解

    CPython 垃圾收集器檢測循環(huán)引用詳解

    這篇文章主要為大家介紹了CPython 垃圾收集器檢測循環(huán)引用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 使用python進行量化交易的完整指南

    使用python進行量化交易的完整指南

    量化交易,作為現(xiàn)代金融市場中的一種先進交易方式,通過運用數(shù)學模型、統(tǒng)計方法和計算機算法來指導交易決策,旨在提高交易效率和決策的準確性,本文將詳細介紹如何使用Python進行量化交易,包括策略開發(fā)、數(shù)據(jù)處理、回測、風險管理和實盤交易等關鍵步驟
    2024-09-09
  • python配置grpc環(huán)境

    python配置grpc環(huán)境

    gRPC 是一款高性能、開源的 RPC 框架,產(chǎn)自 Google,基于 ProtoBuf 序列化協(xié)議進行開發(fā),支持多種語言(Golang、Python、Java等),本篇只介紹 Python 的 gRPC 安裝使用
    2019-01-01

最新評論

吐鲁番市| 寿宁县| 昌黎县| 乡宁县| 电白县| 余姚市| 台北县| 钟祥市| 永寿县| 泾阳县| 秦皇岛市| 叙永县| 拜城县| 田阳县| 马关县| 祁东县| 库伦旗| 万山特区| 定兴县| 怀集县| 卢氏县| 江华| 吉安县| 唐河县| 建宁县| 深水埗区| 新绛县| 大港区| 洛隆县| 双流县| 陆河县| 剑川县| 永兴县| 来凤县| 德格县| 札达县| 上栗县| 连南| 天等县| 炉霍县| 抚顺市|