Как скопировать изображение в новую переменную - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь этот код, но я делаю что-то не так.

class Photo(TimestampedModel):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
image = models.ImageField(upload_to="photos")
image_600 = ImageSpecField(source='image',
                                  processors=[ResizeToFill(600, 600)],
                                  format='JPEG',
                                  options={'quality': 70})

def save(self, *args, **kwargs):
    if not self.id:
        self.image = self.compressImage(self.image)
    super(Photo, self).save(*args, **kwargs)

def compressImage(self, image):
    imageTemporary = Image.open(image)
    format = imageTemporary.format
    outputIoStream = BytesIO()
    imageTemporary.save(outputIoStream, format=format, quality=70)
    outputIoStream.seek(0)
    image = InMemoryUploadedFile(outputIoStream, 'ImageField', image.name,
                                 format, None, None)
    return image

def resizeImage(self, image):
    basewidth = 600

    img = Image.open(image)
    format = img.format

    wpercent = (basewidth/float(img.size[0]))
    hsize = int((float(img.size[1])*float(wpercent)))

    img = img.resize((basewidth,hsize), Image.ANTIALIAS)

    outputIoStream = BytesIO()
    img.save(outputIoStream, format=format, quality=70)
    outputIoStream.seek(0)  

    image = InMemoryUploadedFile(outputIoStream, 'ImageField', image.name,
                                 format, None, None)
    return image

Идея состоит в том, чтобы создать второе изображение (image_card), с новым размером.

В конце я получаю изображение для image_card, но не для image.

Методы compressImage() и resizeImage() работают правильно, но я подозреваю, что resizeImage получает тот же экземпляр изображения.

Если я прокомментирую line self.image_card = self.resizeImage(self.image), image снова будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...