时间:2021-05-23
1. 介绍
上传的图片文件:如
pic = request.FILES["picture"]# pic是 <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> 类型的数据# 而pillow的Image.open("./xxx.jpg") 则是:<class 'PIL.JpegImagePlugin.JpegImageFile'> 类型的数据# 问题是如何把InMemoryUploadedFile转化为PIL类型,并且处理之后再转回InMemoryUploadedFile,并save2. 把InMemoryUploadedFile转化为PIL类型
from PIL import Imagepic = request.FILES["picture"]im_pic = Image.open(pic)# 这样就把InMemoryUploadedFile转化为了PIL类型数据,pic是InMemoryUploadedFile,im_pic是PIL类型3. 处理PIL类型的图片数据
w, h = im_pic.sizeif 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 BytesIOfrom django.core.files.uploadedfile import InMemoryUploadedFile// 先保存到磁盘iopic_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 Picturep = Picture(picture=pic_file)p.save()以上这篇PIL对上传到Django的图片进行处理并保存的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
django处理上传图片生成缩略图首先要注意form标签上必须有enctype="multipart/form-data"属性,另外要装好PIL库,然后就很简单
1预处理(1)对上传的图片进行预处理成100*100大小defprepicture(picname):img=Image.open('./media/pic/'
SSH框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目
本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下:'''tk_image_view_url_io_resiz
项目中有个要求,对上传服务器的图片大小进行判断,大于500k的图片要进行压缩处理,让其小于500k后在上传。可以通过javaapi的ImageIO实现图片压缩,