У меня есть HTML-форма, которая позволяет загружать изображения.Я хочу сохранить исходное изображение в хранилище S3, а затем преобразовать его в миниатюру и сохранить миниатюру в том же хранилище.
Я могу сохранить только исходное изображение, но после преобразования его в миниатюру с помощью PIL при попыткесохранить его, я получаю «Ошибка сервера 500»
Код моего представления выглядит следующим образом:
from django.core.files.storage import default_storage as storage
class upload(View):
def post(self, request):
image = request.FILES['pic']
storage.save(image.name, image)
thisfile = storage.open(image.name)
newimg = Image.open(thisfile)
thumb = newimg.resize((128,128), Image.ANTIALIAS)
storage.save("newimagename", newimg)
#Trying to save it this way doesn't work either
#thisobj = userProfile.objects.get(user= request.user)
#thisobj.image = newimg
#thisobj.save()
Я попытался несколько операторов печати, чтобы убедиться, что он без проблем конвертирует файл, и этобыл, но он сохранил его в памяти, и он печатает, как,
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=600x600 at 0x105C1DEF0>
Я попытался переписать метод сохранения в models.py, но я получаю ту же ошибку
def save(self, *args, **kwargs):
super(userProfile, self).save(*args, **kwargs)
if self.image:
self.image.name = "y.JPG"
image = Image.open(self.image.path)
image = image.resize((128,128), Image.ANTIALIAS)
image.save(self.image.path)