将图像从PIL'Image'类写入模型实例Image File字段

时间:2011-02-18 17:36:03

标签: python django python-imaging-library

我想加载一个图像并使用Python Imaging Library对其进行操作,然后将其存储在模型的ImageField中。以下概述了我正在尝试做的事情,减去操纵:

#The model

    class DjInfo(models.Model):
        dj_name = models.CharField(max_length=30)
        picture = models.ImageField(upload_to="images/dj_pictures")
        email_address = models.EmailField()

    #What I'm trying to do:

    import tempfile
    import Image
    from artists.models import DjInfo

    image = Image.open('ticket.png')
    tf = tempfile.TempFile(mode='r+b')
    image.save(tf, 'png')

    dji=DjInfo()
    dji.picture.save('test.png', tf)

1 个答案:

答案 0 :(得分:-1)

你可以这样做:

image = Image.open('test.png')
tf = tempfile.TemporaryFile(mode='r+b')
name = tf.name
del tf
image.save(name, 'png')
dji=DjInfo()
dji.picture.save('test.png', name)

但我怀疑使用cStringIO或其他缓冲区对象有更好的方法可以节省将临时文件写入HDD的额外步骤。

this是同一个问题吗?: