在覆盖模型中的保存方法时,我在使用适当的格式保存图像时遇到问题。
我的代码:
class Whatever(models.Model):
image = models.ImageField(upload_to="whatever")
def save(self, *args, *kwargs):
# Here I save file to the disk
super(Whatever, self).save(*args, **kwargs)
# Then i get this file
filename = MEDIA_ROOT + '/' + self.image.name
# And do something with it
img = cut_circle(filename, (42, 42), 42)
# Now save it
img.save(filename+)
这就是问题所在,我需要结果图像的透明度,但用户可以上传到服务器坏格式,例如jpeg。
那么,我怎样才能改变基地的文件格式?我试过self.image.save,但这种方式很复杂,我认为。
答案 0 :(得分:2)
我不知道您使用的库cut_circle
,但如果它是PIL
,它可以通过将其作为格式关键字参数传递来保存PNG中的图像;所以你可以这样做:
img.save(filename,format='png')
对于JPG来说这似乎很好;但是如果你想保留像gif这样的格式的透明度,你需要明确地处理那个格式as covered by Nadia。