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 をアップロードできます。

では、ベースでファイル形式を変更するにはどうすればよいですか? 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 に答える