Django,Pillow,NotImplementedError - 绝对路径

时间:2017-07-17 16:08:07

标签: image storage django-1.11

我在调整大小后将用户头像上传到S3。我的ModelForm如下:

class UserAvatarForm(forms.ModelForm):
    x = forms.FloatField(widget=forms.HiddenInput())
    y = forms.FloatField(widget=forms.HiddenInput())
    width = forms.FloatField(widget=forms.HiddenInput())
    height = forms.FloatField(widget=forms.HiddenInput())

    class Meta:
        model = UserProfile
        fields = ('id', 'img', 'x', 'y', 'width', 'height')

    def save(self, *args, **kwargs):
        photo = super(UserAvatarForm, self).save()

        x = self.cleaned_data.get('x')
        y = self.cleaned_data.get('y')
        w = self.cleaned_data.get('width')
        h = self.cleaned_data.get('height')

        image = Image.open(photo.img)
        cropped_image = image.crop((x, y, w+x, h+y))
        resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS)
        resized_image.save(photo.img.path)

        return photo
  

/ profile / avatar /中的NotImplementedError这个后端不支持   绝对路径。

我已经看到我可以编辑保存方法以使用File Storage API,但我不知道如何实现它。有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:0)

这使它起作用;我会留在这里以供将来参考:

def save(self, *args, **kwargs):
    photo = super(UserAvatarForm, self).save()

    x = self.cleaned_data.get('x')
    y = self.cleaned_data.get('y')
    w = self.cleaned_data.get('width')
    h = self.cleaned_data.get('height')

    image = Image.open(photo.img)
    cropped_image = image.crop((x, y, w+x, h+y))
    resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS)
    storage_path = storage.open(photo.img.name, "wb")
    resized_image.save(storage_path, 'png')
    storage_path.close()

    return photo