0

在模型中覆盖保存方法时,我无法以正确的格式保存图像。

我的代码:

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。

那么,我如何更改base中的文件格式?我尝试了self.image.save,但我认为这种方式很复杂。

4

1 回答 1

2

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

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

这对 JPG 来说似乎很好;但是,如果您想保留 gif 等格式的透明度,您将需要明确地处理Nadia 所涵盖的格式。

于 2012-06-02T19:06:15.953 回答