我应该在哪个文件中编写代码来调整 Django 上图像文件的大小?
In which file should I write codes to resize Image file on Django?
我想调整图像大小并将其保存到 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))
在您的模型中似乎更好,因为图片总是会调整大小(在您网站的操作和管理面板中)。
我认为最好的做法是当你使用诸如 celery
或其他东西的后台作业时,并在模型保存模式下调用它。
最好使用 Pillow
包和 sorl
及其 thumbnail
制作任意大小的缩略图并通过 redis
自动索引
考虑这个要点:
import picke
create_thumbnail_images.apply_async([pickle.dumps(self.image_path), USER_IMAGE_THUMB_SIZES], countdown=5)
您可以在模型的 save
操作中使用上述示例代码在后台创建缩略图,这样您就不会因为创建这些缩略图而被阻止。
我想调整图像大小并将其保存到 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))
在您的模型中似乎更好,因为图片总是会调整大小(在您网站的操作和管理面板中)。
我认为最好的做法是当你使用诸如 celery
或其他东西的后台作业时,并在模型保存模式下调用它。
最好使用 Pillow
包和 sorl
及其 thumbnail
制作任意大小的缩略图并通过 redis
考虑这个要点:
import picke
create_thumbnail_images.apply_async([pickle.dumps(self.image_path), USER_IMAGE_THUMB_SIZES], countdown=5)
您可以在模型的 save
操作中使用上述示例代码在后台创建缩略图,这样您就不会因为创建这些缩略图而被阻止。