加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Django – 在model.Imagefield中裁剪并保存Imagefield

发布时间:2020-12-20 13:51:32 所属栏目:Python 来源:网络整理
导读:我需要从表单中剪切获救的图像并将其存储在model. ImageField中 我的models.py class Story(models.Model): creator = models.ForeignKey(User_info) storyid = models.AutoField(primary_key=True) text = models.TextField() title = models.CharField(max
我需要从表单中剪切获救的图像并将其存储在model. ImageField中

我的models.py

class Story(models.Model): 
  creator = models.ForeignKey(User_info)
  storyid = models.AutoField(primary_key=True)
  text = models.TextField()
  title = models.CharField(max_length=255)
  photo = models.ImageField(upload_to='story_picture')

我的views.py

from PIL import Image
from io import BytesIO
from django.core.files import File

def post(self,request,*args,**kwargs):                       

    form = writeForm(request.POST,request.FILES)
    print form

    User = request.user
    usuario = User_info.objects.get(user=User.id)

    story = Story()
    story.creator = usuario
    story.text = request.POST['story']
    story.title = request.POST['title']

    newImage =  Image.open(form.cleaned_data['photo'])

    story.photo = newImage.crop((10,10,800,800))    

    story.save()

我需要在asosiarla之前将图像裁剪为模型的一个实例

解决方法

试试这个:

将裁剪区域保存在媒体根目录中的某个位置(确保路径是绝对的):

story.save(settings.MEDIA_ROOT + 'something.jpeg')

然后只需为图像字段设置图像名称并保存对象.这次路径应该是相对的,因为它将用于图像URL(假设您已经在为媒体文件提供服务):

obj.image_field.name = '/media/something.jpeg'
obj.save()

P.S.:不要使用前导大写命名对象变量,这是一种不好的做法(使用用户而不是用户).只有类名应以大写字母开头.此外,Python约定是使用下划线作为变量名中的单词分隔符(使用new_image而不是newImage,write_form而不是writeFrom),而不是类似于驼峰的情况,除了在类名中,哪里好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读