Django保存方法和图像处理

时间:2012-06-02 16:52:30

标签: python django

在覆盖模型中的保存方法时,我在使用适当的格式保存图像时遇到问题。

我的代码:

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,但这种方式很复杂,我认为。

1 个答案:

答案 0 :(得分:2)

我不知道您使用的库cut_circle,但如果它是PIL,它可以通过将其作为格式关键字参数传递来保存PNG中的图像;所以你可以这样做:

img.save(filename,format='png')

对于JPG来说这似乎很好;但是如果你想保留像gif这样的格式的透明度,你需要明确地处理那个格式as covered by Nadia