python3版本 解决PIL图片验证码 string argument expected, got 'bytes' 的问题

请求指定链接并返回结果时出现 TypeError: string argument expected, got 'bytes'  错误

经过排查问题出现在使用StringIO的write方法上,用BytesIO替代StringIO即可解决问题,代码如下


image = Image.new('RGB', (self.width, self.height), (255, 255, 255))
image = self.background(image)
image = self.text(image, self.fonts, drawings=['warp', 'rotate', 'offset'])
image = self.curve(image)
image = self.noise(image)
image = self.smooth(image)
name = "".join(random.sample(string.ascii_lowercase + string.ascii_uppercase + '3456789', 24))
text = "".join(self._text)
# out = StringIO()
"""python3新增了bytes的数据类型"""
out = BytesIO()
image.save(out, format=fmt)
if path:
    image.save(os.path.join(path, name), fmt)
return name, text, out.getvalue()

哈哈,是不是解决了呢

你可能感兴趣的:(python3版本 解决PIL图片验证码 string argument expected, got 'bytes' 的问题)