这题感觉是第0题和第1题的组合,把随机生成的数字写在有噪点的背景图上就行了 不过查了Image.Draw.text 并没有旋转字符的方法,想要做出网上常见的那种验证码,就需要先生成旋转好的字符图片,再把图片合在一起才行了,我因为懒,所以没有旋转字符。
import os, random, string from PIL import Image, ImageDraw, ImageFont if __name__ == '__main__': #随机种子范围取所有大小写字母和数字 str_base = string.ascii_letters + string.digits #字符横坐标参数 pos = 20 #打开文件 with Image.open('bg.png') as file: #创建一个Draw对象 add_letter = ImageDraw.Draw(file) for i in range(4): #字号的随机数 size = random.randint(25, 35) #载入字体并设置字号,字体用的是微软雅黑 letter_font = ImageFont.truetype('msyh.ttc', size) #字符颜色的随机数 r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) #创建文字 add_letter.text((pos, 0), random.choice(str_base), font = letter_font, fill = (r, g, b)) #横坐标右移 pos += 40 #保存为新的文件 file.save('verification.png')图片效果