Image.save () сохраняет пустое пустое изображение (0B) - PullRequest
0 голосов
/ 04 мая 2020

Я сохраняю изображения в хранилище amazon s3.

image = models.ImageField(upload_to=upload_avatar_to, null=True, blank=True)


def upload_avatar_to(instance, filename):
    import os
    from django.utils.timezone import now
    shop_uuid = Shop.objects.get(id=instance.shop_id).uuid
    instance_dict = instance.__dict__
    filename_base, filename_ext = os.path.splitext(filename)
    return 'shops/%s/items/%s/%s%s' % (
        shop_uuid,
        instance_dict['uuid'],
        now().strftime("%Y%m%d%H%M%S"),
        filename_ext.lower(),
    )

Теперь я получаю изображение, сохраненное в хранилище, и изменяю его размер до миниатюры для сохранения пустого файла (имеющего размер 0B), вызывая create_avatar_thumb

def create_avatar_thumb(self):
        import os
        from PIL import Image
        from django.core.files.storage import default_storage as storage
        if not self.image:
            return ""
        file_path = self.image.name
        filename_base, filename_ext = os.path.splitext(file_path)
        thumb_file_path = "%s_thumb.jpg" % filename_base
        f = storage.open(file_path, 'rb')
        image = Image.open(f)
        image.thumbnail((400, 400))
        f_thumb = storage.open(thumb_file_path, "w")
        image.save(f_thumb, "JPEG")
        f_thumb.close()

Пожалуйста, помогите; используя django

...