在某些教程中,解释了如何在枕头保存方法中使用StringIO
。但是当我使用以下测试代码时:
from PIL import Image
from io import StringIO, BytesIO
photo = Photo.objects.get(pk=1)
bytes = BytesIO()
string = StringIO()
image = Image.open(photo.image)
image.save(string, 'PNG')
然后我得到错误:
预期为字符串参数,为“字节”
但是当我像这样使用BytesIO
时:
image.save(bytes, 'PNG')
它工作正常。这很奇怪,因为错误消息说应该是字符串,而字节是错误的,但是显然相反是正确的。这也与我在阅读教程时获得的信息相反。
也许save()
的行为在Pillow分支中已更改,并且错误消息未更新?还是因为我将Python 3与io
模块而不是StringIO
模块一起使用而导致了?
编辑,例如建议StringIO
的示例