Как изменить размер изображения для отображения в шаблоне, не затрагивая исходное изображение?

Я попробовал изменить размер изображения в моем views.py с помощью PIL, но это не действует на отрисованной странице, поскольку изображение остается того же размера. Может быть, я упускаю что-то очевидное?

Views.py

def home(request):
    if request.method == "POST":
        pass
    vendors = Vendor.objects.all()
    size = (360, 200)
    for vendor in vendors:
        try:
            image = Image.open(vendor.imageURL)
        except:
            continue
        image.thumbnail(size)
        image.save(vendor.imageURL)

    context = {'vendors': vendors}
    return render(request, 'home.html', context)

Models.py

class Vendor(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=200, unique=True) 
    image = models.ImageField(null=True, blank=True)


    def __str__(self):
        return self.name

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ''
        return url

Я не использую модели, представления или djangos, но метод thumbnail() действительно изменяет изображение, на которое вы вызываете его in-place.

Если вы хотите сохранить оригинал, вам нужно работать над копией.

th = original.copy()
th.thumbnail(size)
Вернуться на верх