Python如何制作图片验证码的简单实例
本篇文章主要介绍了Python简单的制作图片验证码实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这里示范的验证码都是简单的,你也可以把字符扭曲
Python第三方库无比强大,PIL 是python的一个d第三方图片处理模块,我们也可以使用它来生成图片验证码
PIL安装
命令安装:
pip install pillow
例子:生成图片,并填充文字
#!/usr/bin/python #-*-coding:utf-8-*- from PIL import Image, ImageDraw, ImageFont, ImageFilter # 实例一个图片对象240 x 60: width = 60 * 4 height = 60 # 图片颜色 clo = (43, 34, 88) # 我觉得是紫蓝色 image = Image.new('RGB', (width, height), clo) # 创建Font对象: # 字体文件可以使用操作系统的,也可以网上下载 font = ImageFont.truetype('./font/Arial.ttf', 36) # 创建Draw对象: draw = ImageDraw.Draw(image) # 输出文字: str1 = "ren ren Python" w = 4 #距离图片左边距离 h = 10 #距离图片上边距离 draw.text((w, h), str1, font=font) # 模糊: image.filter(ImageFilter.BLUR) code_name = 'test_code_img.jpg' save_dir = './{}'.format(code_name) image.save(save_dir, 'jpeg') print("已保存图片: {}".format(save_dir))
(venv) allenwoo@~/renren/code$ python test2.py 已保存图片: ./test_code_img.jpg
图片如下:
文字没有什么色彩,我们也可以加上颜色,只需要在 text 中传人 fill 参数就好
draw.text((w, h), str1, font=font, fill = (78, 64, 65))
随便加的颜色
我们还可以把背景弄成很多个小点,每隔n隔像素填充个其他颜色比如:
#!/usr/bin/python #-*-coding:utf-8-*- from PIL import Image, ImageDraw, ImageFont, ImageFilter # 实例一个图片对象240 x 60: width = 60 * 4 height = 60 # 图片颜色 clo = (43, 34, 88) # 我觉得是紫蓝色 image = Image.new('RGB', (width, height), clo) # 创建Font对象: # 字体文件可以使用操作系统的,也可以网上下载 font = ImageFont.truetype('./font/Arial.ttf', 36) # 创建Draw对象: draw = ImageDraw.Draw(image) # 填充像素: # 宽每隔 20, 高每隔5, 形成坐标x,y # 红色:220,20,60 for x in range(0, width, 20): for y in range(0, height, 5): draw.point((x, y), fill=(220, 20, 60)) # 输出文字: str1 = "we are renren" w = 4 #距离图片左边距离 h = 10 #距离图片上边距离 draw.text((w, h), str1, font=font, fill = (78, 64, 65)) # 模糊: image.filter(ImageFilter.BLUR) code_name = 'test_code_img.jpg' save_dir = './{}'.format(code_name) image.save(save_dir, 'jpeg') print("已保存图片: {}".format(save_dir))
结果图片:
PIL制作验证码
利用以上这些,还有我们之前学习的随机生成器random就可以做个验证码了,
生成验证码代码
#!/usr/bin/python #-*-coding:utf-8-*- from uuid import uuid1 from PIL import Image, ImageDraw, ImageFont, ImageFilter import random def rnd_char(): ''' 随机一个字母或者数字 :return: ''' # 随机一个字母或者数字 i = random.randint(1,3) if i == 1: # 随机个数字的十进制ASCII码 an = random.randint(97, 122) elif i == 2: # 随机个小写字母的十进制ASCII码 an = random.randint(65, 90) else: # 随机个大写字母的十进制ASCII码 an = random.randint(48, 57) # 根据Ascii码转成字符,return回去 return chr(an) # 干扰 def rnd_dis(): ''' 随机一个干扰字 :return: ''' d = ['^','-', '~', '_', '.'] i = random.randint(0, len(d)-1) return d[i] # 两个随机颜色都规定不同的区域,防止干扰字符和验证码字符颜色一样 # 随机颜色1: def rnd_color(): ''' 随机颜色,规定一定范围 :return: ''' return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255)) # 随机颜色2: def rnd_color2(): ''' 随机颜色,规定一定范围 :return: ''' return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127)) def create_code(): # 240 x 60: width = 60 * 4 height = 60 image = Image.new('RGB', (width, height), (192, 192, 192)) # 创建Font对象: font = ImageFont.truetype('./font/Arial.ttf', 36) # 创建Draw对象: draw = ImageDraw.Draw(image) # 填充每个像素: for x in range(0, width, 20): for y in range(0, height, 10): draw.point((x, y), fill=rnd_color()) # 填充字符 _str = "" # 填入4个随机的数字或字母作为验证码 for t in range(4): c = rnd_char() _str = "{}{}".format(_str, c) # 随机距离图片上边高度,但至少距离30像素 h = random.randint(1, height-30) # 宽度的化,每个字符占图片宽度1/4,在加上10个像素空隙 w = width/4 * t + 10 draw.text((w, h), c, font=font, fill=rnd_color2()) # 实际项目中,会将验证码 保存在数据库,并加上时间字段 print("保存验证码 {} 到数据库".format(_str)) # 给图片加上字符干扰,密集度由 w, h控制 for j in range(0, width, 30): dis = rnd_dis() w = t * 15 + j # 随机距离图片上边高度,但至少距离30像素 h = random.randint(1, height - 30) draw.text((w, h), dis, font=font, fill=rndColor()) # 模糊: image.filter(ImageFilter.BLUR) # uuid1 生成唯一的字符串作为验证码图片名称 code_name = '{}.jpg'.format(uuid1()) save_dir = './{}'.format(code_name) image.save(save_dir, 'jpeg') print("已保存图片: {}".format(save_dir)) # 当直接运行文件的是和,运行下面代码 if name == "main": create_code()
(venv) allenwoo@~/renren/code$ python test.py 保存验证码 ef3k 到数据库 已保存图片: ./c86e03c0-1c23-11e7-999d-f45c89c09e61.jpg (venv) allenwoo@~/renren/code$ python test.py 保存验证码 I37X 到数据库 已保存图片: ./cb8aed02-1c23-11e7-9b18-f45c89c09e61.jpg (venv) allenwoo@~/renren/code$ python test.py 保存验证码 vVL1 到数据库 已保存图片: ./cc120da8-1c23-11e7-b762-f45c89c09e61.jpg (venv) allenwoo@~/renren/code$ python test.py 保存验证码 K6w3 到数据库 已保存图片: ./cc891e05-1c23-11e7-b7ec-f45c89c09e61.jpg
你觉得难不难呢?最后这个生成验证码代码中有些逻辑问题要理解下
Atas ialah kandungan terperinci Python如何制作图片验证码的简单实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Membolehkan pecutan GPU pytorch pada sistem CentOS memerlukan pemasangan cuda, cudnn dan GPU versi pytorch. Langkah-langkah berikut akan membimbing anda melalui proses: Pemasangan CUDA dan CUDNN Tentukan keserasian versi CUDA: Gunakan perintah NVIDIA-SMI untuk melihat versi CUDA yang disokong oleh kad grafik NVIDIA anda. Sebagai contoh, kad grafik MX450 anda boleh menyokong CUDA11.1 atau lebih tinggi. Muat turun dan pasang Cudatoolkit: Lawati laman web rasmi Nvidiacudatoolkit dan muat turun dan pasang versi yang sepadan mengikut versi CUDA tertinggi yang disokong oleh kad grafik anda. Pasang Perpustakaan Cudnn:

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Penyimpanan Objek Minio: Penyebaran berprestasi tinggi di bawah CentOS System Minio adalah prestasi tinggi, sistem penyimpanan objek yang diedarkan yang dibangunkan berdasarkan bahasa Go, serasi dengan Amazons3. Ia menyokong pelbagai bahasa pelanggan, termasuk Java, Python, JavaScript, dan GO. Artikel ini akan memperkenalkan pemasangan dan keserasian minio pada sistem CentOS. Keserasian versi CentOS Minio telah disahkan pada pelbagai versi CentOS, termasuk tetapi tidak terhad kepada: CentOS7.9: Menyediakan panduan pemasangan lengkap yang meliputi konfigurasi kluster, penyediaan persekitaran, tetapan fail konfigurasi, pembahagian cakera, dan mini

Latihan yang diedarkan Pytorch pada sistem CentOS memerlukan langkah -langkah berikut: Pemasangan Pytorch: Premisnya ialah Python dan PIP dipasang dalam sistem CentOS. Bergantung pada versi CUDA anda, dapatkan arahan pemasangan yang sesuai dari laman web rasmi Pytorch. Untuk latihan CPU sahaja, anda boleh menggunakan arahan berikut: PipinstallToRchTorchVisionTorchaudio Jika anda memerlukan sokongan GPU, pastikan versi CUDA dan CUDNN yang sama dipasang dan gunakan versi pytorch yang sepadan untuk pemasangan. Konfigurasi Alam Sekitar Teragih: Latihan yang diedarkan biasanya memerlukan pelbagai mesin atau mesin berbilang mesin tunggal. Tempat

Apabila memasang pytorch pada sistem CentOS, anda perlu dengan teliti memilih versi yang sesuai dan pertimbangkan faktor utama berikut: 1. Keserasian Persekitaran Sistem: Sistem Operasi: Adalah disyorkan untuk menggunakan CentOS7 atau lebih tinggi. CUDA dan CUDNN: Versi Pytorch dan versi CUDA berkait rapat. Sebagai contoh, Pytorch1.9.0 memerlukan CUDA11.1, manakala Pytorch2.0.1 memerlukan CUDA11.3. Versi CUDNN juga mesti sepadan dengan versi CUDA. Sebelum memilih versi PyTorch, pastikan anda mengesahkan bahawa versi CUDA dan CUDNN yang serasi telah dipasang. Versi Python: Cawangan Rasmi Pytorch

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.
