在一些教程中解释了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 fork 中的行为发生了变化,并且错误消息没有更新?还是因为我使用带有io
模块而不是StringIO
模块的 Python 3 而有所不同?
编辑,StringIO
建议的示例