从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章给大家分享的是有关如何实现PIL对上传到Django的图片进行处理并保存的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联建站是一家专业提供渝水企业网站建设,专注与成都网站制作、成都网站设计、外贸营销网站建设、H5高端网站建设、小程序制作等业务。10年已为渝水众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。1. 介绍
上传的图片文件:如
pic = request.FILES["picture"] # pic是类型的数据 # 而pillow的Image.open("./xxx.jpg") 则是: 类型的数据 # 问题是如何把InMemoryUploadedFile转化为PIL类型,并且处理之后再转回InMemoryUploadedFile,并save
2. 把InMemoryUploadedFile转化为PIL类型
from PIL import Image pic = request.FILES["picture"] im_pic = Image.open(pic) # 这样就把InMemoryUploadedFile转化为了PIL类型数据,pic是InMemoryUploadedFile,im_pic是PIL类型
3. 处理PIL类型的图片数据
w, h = im_pic.size if w >= h: w_start = (w-h)*0.618 box = (w_start, 0, w_start+h, h) region = im_pic.crop(box) else: h_start = (h-w)*0.618 box = (0, h_start, w, h_start+w) region = im_pic.crop(box) # region就是PIL处理后的正方形了
4. 将处理后的PIL类型转化为InMemoryUploadedFile类型
from io import BytesIO from django.core.files.uploadedfile import InMemoryUploadedFile // 先保存到磁盘io pic_io = BytesIO() region.save(pic_io, im_pic.format) // 再转化为InMemoryUploadedFile数据 pic_file = InMemoryUploadedFile( file=pic_io, field_name=None, name=pic.name, content_type=pic.content_type, size=pic.size, charset=None )
pic_file 就是region转化后的InMemoryUploadedFile了
5. 保存InMemoryUploadedFile到数据库
from ./models import Picture p = Picture(picture=pic_file) p.save()
感谢各位的阅读!关于“如何实现PIL对上传到Django的图片进行处理并保存”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图