驗(yàn)證碼制作
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)黃驊,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792#string模塊自帶數(shù)字、字母、特殊字符變量集合,不需要我們手寫集合 import string import random import os import uuid import settings from PIL import Image, ImageDraw, ImageColor, ImageFilter, ImageFont class Code(object): # 生成隨機(jī)生成數(shù)字或字母 def random_hexdigits(self, len=1): return random.sample(string.hexdigits, len) # 生成干擾字符 def punctuation(self, len=1): return tuple(random.sample(string.punctuation, len)) # 定義干擾字符顏色 def random_color(self, min=64, max=255): return tuple((random.randint(min, max) for i in range(3))) # 生成驗(yàn)證碼 def creat_code(self, width=80, height=24, color=(192, 192, 192)): image = Image.new('RGB', (width, height), color) #建議下載幾款字體,變換下風(fēng)格,我在setting粒定義了static路徑,這里就直接導(dǎo)入了 font = ImageFont.truetype(os.path.join(settings.STATICPATH, 'fonts/Lora-Regular.ttf'), 20) draw = ImageDraw.Draw(image) self.fill_color(draw, image, 5) self.fill_dischar(draw, image, 10) code = self.fill_char(draw, image, 4, 10, font) image_name = '{}.jpeg'.format(uuid.uuid4().hex) image_path = os.path.join(settings.STATICPATH, 'code/{}'.format(image_name)) print(image_path) image.save(image_path) return {'code': code, 'image_path': image_path} # 填充顏色 def fill_color(self, draw, image, interval): for i in range(0, image.width, interval): for j in range(0, image.height, interval): draw.point((i, j), fill=self.random_color()) # 填充驗(yàn)證碼 def fill_dischar(self, draw, image, interval): for i in range(0, image.width, interval): dis = self.punctuation() j = random.randrange(3, image.height - 3) draw.text((i, j), dis[0], fill=self.random_color(64, 255)) # 填充驗(yàn)證碼 def fill_char(self, draw, image, num, interval, font): code = '' for i in range(num): cha = self.random_hexdigits() code += str(cha[0]) j = random.randrange(0, 5) # print(cha) # print(image.width*(i/num)+interval,j) draw.text((image.width * (i / num) + interval, j), cha[0], fill=self.random_color(32, 127), font=font) return code if __name__ == "__main__": code = Code() print(code.creat_code())
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。