Как изменить размер изображения для отображения в шаблоне, не затрагивая исходное изображение?
Я попробовал изменить размер изображения в моем 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)