我在调整大小后将用户头像上传到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,但我不知道如何实现它。有任何帮助吗?感谢
答案 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