Django图像修改,从一个图像字段到另一个



我在模型中有一个图像字段。我需要将该图像的两个副本(调整大小)复制到另两个字段(thumb_big和thumb_small)。Thumb_big的宽度是225px,高度可以是任何值。thumb_small是65x50px。

我搜索了,但似乎没有适合我的问题。我已经安装了PIL。试过django-imagekit和其他一些代码片段。

如果你知道任何链接,也将是伟大的,顺便说一句,我是一个django新手,但你假设已经,对吗?

这是我的模型

class Photo(models.Model):
    title = models.CharField(max_length=500)
    pub_date = models.DateField(auto_now_add=True)
    mod_date = models.DateField(auto_now=True)
    slug_name = models.SlugField(max_length=500)
    image = models.ImageField(upload_to='interview', blank=True)
    thumb_big = models.ImageField(upload_to= 'interview/thumbs_big', blank=True)
    thumb_small = models.ImageField(upload_to= 'interview/thumbs_small', blank=True)
    category = models.CharField(max_length=200, blank=True)
    details = models.TextField()
    def __unicode__(self):
        return self.title

我不太确定为什么需要在数据库中存储缩略图路径。有几个django缩略图应用程序。我最喜欢的两个是:

  • sor_thumbnail - https://github.com/sorl/sorl-thumbnail
  • easy-thumbnails - https://github.com/SmileyChris/easy-thumbnails

它们都使用模板标签来动态生成缩略图,并将它们显示在你的django模板中。

它们还带有自定义数据库字段,使缩略图管理更容易:http://thumbnail.sorl.net/examples.html#model-examples

http://packages.python.org/easy-thumbnails/usage.html模型

如果您真的需要在模型中保存缩略图的路径,您可以在图像上传视图中生成两个缩略图,然后将结果文件路径分配给相应的数据库字段。使用简单的缩略图,它看起来像:

photo = form.save()
from easy_thumbnails.files import get_thumbnailer
thumbnailer = get_thumbnailer(photo.image)
thumb = thumbnailer.get_thumbnail({'size': (100, 100)})
photo.thumb_big = thumb.name
photo.save()

最新更新