python 基础 第六课 作业 xiao

# 使用PIL 库 创建验证码

from PIL import Image, ImageDraw, ImageFont
class Captcha(object):
    def __init__(self, size=(200, 80), fontSize = 30):
        self.font = ImageFont.truetype("Verdana.ttf", fontSize)
        self.size = size
        self.image = Image.new('RGBA', self.size, (255,)*4)
        self.texts = self.randNum(5)®
        
    def randNum(self, bits):
        return ' '.join(str(random.randint(0, 9)) for i in range(bits))
    
    def randColor(self):
        self.fontColor = (random.randint(0, 250), random.randint(0, 250), random.randint(0, 250))
        
    def write(self, text, x):
        draw = ImageDraw.Draw(self.image)
        draw.text((x, 4), text, fill = self.fontColor, font = self.font)
        
    def rotate(self):
        rot = self.image.rotate(random.randint(-10, 10), expand = 0)
        fff = Image.new('RGBA', rot.size, (255,)*4)
        self.image = Image.composite(rot, fff, rot)
        
    def writeNum(self):
        x = 10
        xplus = 15
        for text in self.texts:
            self.randColor()
            self.write(text, x)
            self.rotate()
            x += xplus
        print(self.texts)
        return self.texts
    
    def save(self):
        self.image.save('captcha.png')
        
img = Captcha()
num = img.writeNum()
img.image.show()
img.save()

#使用matplotlib 画饼图
from matplotlib import pyplot as plt

plt.figure(figsize=(6, 9))
labels = ['part1', 'part2', 'part3']

sizes = [125,60,20]
colors = ['red', 'yellowgreen', 'lightskyblue']
explode = [0.05, 0.1, 0.2]

patches, l_text, p_text = plt.pie(sizes, explode=explode, labels = labels, colors = colors, labeldistance = 1.2, autopct = '%4.1f%%', shadow = True,
       startangle = 90, pctdistance = 0.6)

print(l_text)
print(p_text)
for t in l_text:
    t.set_size(20)
    
for t in p_text:
    t.set_size(20)

plt.axis('equal')
plt.legend()
plt.show()


@david 老师,请帮忙检查一下,谢谢
已邀请:

qq用户321660

赞同来自:


matplotlib画得很好。没毛病。可以尝试更多种的图形。直方,条形等图形。

验证码的,我本地缺字体,没能成功运行,第 9行,还多了个r,肯定不错。self.texts = self.randNum(5)®
整体其它没什么问题

棒~

要回复问题请先登录注册

返回顶部