我应该在哪个文件中编写代码来调整 Django 上图像文件的大小?

In which file should I write codes to resize Image file on Django?

我想调整图像大小并将其保存到 Django 上的数据库中。我发现有几个网站提到了Django的resize,有的写models.py,有的写views.py。我应该在哪个文件中写代码,views.pymodels.py

from PIL import Image
img = Image.open('original.jpg', 'r')
img.thumbnail((100, 100), Image.ANTIALIAS)
img.save('thumbnail.jpg', 'JPEG', quality=75, optimize=True)

models.py

class Photo(models.Model):
    photo = models.ImageField(upload_to="...")
    def save(self, *args, **kwargs):
        do_somehting()
        super(Photo, self).save()

您可以为此使用 imagekit,例如:

from django.db import models
from imagekit.models import ProcessedImageField
from imagekit.processors import Resize

class SomeModel(models.Model):
    ...
    photo = models.ProcessedImageField(upload_to="...", processors=[Resize(650, 402))

在您的模型中似乎更好,因为图片总是会调整大小(在您网站的操作和管理面板中)。

我认为最好的做法是当你使用诸如 celery 或其他东西的后台作业时,并在模型保存模式下调用它。

最好使用 Pillow 包和 sorl 及其 thumbnail 制作任意大小的缩略图并通过 redis

自动索引

考虑这个要点:

import picke
create_thumbnail_images.apply_async([pickle.dumps(self.image_path), USER_IMAGE_THUMB_SIZES], countdown=5)

您可以在模型的 save 操作中使用上述示例代码在后台创建缩略图,这样您就不会因为创建这些缩略图而被阻止。