我正在尝试将jSignature图像保存到 django FileField。我的表单保存代码如下:
def save(self, commit=True):
instance = super(ApplicationForRetailInstallmentContractForm, self).save(commit=False)
signature = self.cleaned_data.get('signature')
signature_image = draw_signature(signature)
# at this point, signature_image is a PIL.Image.Image instance
signature_image.show()
signature_io = StringIO.StringIO()
signature_image.save(signature_io, format='JPEG')
thumb_file = InMemoryUploadedFile(
signature_io,
None,
'%s signature.jpg' % instance.name,
'image/jpeg',
signature_io.len,
None,
)
instance.signature = thumb_file
if commit:
instance.save()
return instance
目前,当签名保存到文件字段时,它会创建一个具有正确分辨率的图像,但那是完全黑色的,这显然是不正确的。因为我们使用谷歌存储桶作为网站媒体的实时版本,所以涉及创建实际本地文件的解决方案将不起作用。最后,我有两个问题:
- 什么可能导致图像保存不正确?
2. 是否可以在 django 中使用诸如 signature_image.show() 之类的东西(目前没有显示任何错误但也没有显示任何内容)来查看以 PIL.Image.Image 形式存在的图像,这样我就可以找出在哪里在这个过程中图像被破坏了?我能够通过按照Image.show()中的建议安装 imagemagick 来显示图像任何已发布代码的问题。