当用户在Django的UpdateView中上传图像时,我希望能够创建3种不同大小的图像。
我还希望能够将他们上传的文件重命名为username_thumb_01.jpg,username_original_01.jpg,username_medium_01.jpg。
class UserProfileEditView(UpdateView):
model = UserProfile
form_class = UserProfileForm
template_name = "edit_profile.html"
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
website = models.URLField(null=True, blank=True)
avatar = models.ImageField(upload_to="user-photos", null=True, blank=True)
我尝试在我的UserProfileEditView中添加如下内容,但它没有用,我不确定如果我在正确的轨道上。
def form_valid(self, form):
if self.request.files:
filename= join(settings.MEDIA_ROOT, profile.avatar.name)
im = Image.open(filename)
im.thumbnail((160,160), Image.ANTIALIAS)
im.save(imfn, "JPEG")
form.save
以前有人这样做过吗?我怎么能完成它?
答案 0 :(得分:1)
虽然他们的方法不同但我建议使用sorl-thumbnail。它们在上传时不是创建图像,而是在需要时创建图像,然后使用您指定的任何缓存系统对它们进行缓存。
答案 1 :(得分:0)
我是通过使用自定义图像字段来完成此操作的。它的代码可以在https://github.com/hellsgate1001/django-thumbs的github上找到。
我没有创建这个,我分叉它为缩略图创建增加了一点灵活性,并确保它适用于Django 1.5