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

Python 我应该在哪个文件中编写代码来调整Django上的图像文件的大小?,python,django,resize,python-imaging-library,Python,Django,Resize,Python Imaging Library,我想调整图像大小并将其保存到Django上的数据库中。我发现有几个网站提到了Django的resize,其中一些是在models.py中编写的,而另一些则是在views.py中编写的。我应该在哪个文件中编写代码,views.py或models.py from PIL import Image img = Image.open('original.jpg', 'r') img.thumbnail((100, 100), Image.ANTIALIAS) img.save('thumbnail.jp

我想调整图像大小并将其保存到
Django
上的数据库中。我发现有几个网站提到了Django的resize,其中一些是在models.py中编写的,而另一些则是在views.py中编写的。我应该在哪个文件中编写代码,
views.py
models.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))

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

我认为最好的做法是使用背景作业,如芹菜或其他东西,并在模型保存模式下调用它

最好使用
枕头
包装和
sorl
及其
缩略图
制作任意大小的缩略图,并通过
redis

考虑一下这一要点:

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

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

对此没有明确的答案。何时调整图像大小?页面加载?关于项目保存?无论如何,您都可以将此代码放在单独的py文件中。这取决于您希望如何组织代码。@W谢谢您的回复。对不起,我的问题不清楚。例如,当用户上传他/她的照片时,就会发生这种情况。请看这张照片,并回答您的问题:@Wtower抱歉,回复太晚。链接非常好。其中一个答案只使用PIL,不使用库。我学到了很多。谢谢,谢谢你让我知道。我现在在外面,所以我会稍后再试。谢谢。很抱歉回复晚了。我使用Redis,所以Sorl很不错。非常感谢。@yamachan如果这有帮助,我很感谢你的回答