PIL对上传到Django的图片进行处理并保存的实例


Posted in Python onAugust 07, 2019

1. 介绍

上传的图片文件:如

pic = request.FILES["picture"]
# pic是 <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> 类型的数据

# 而pillow的Image.open("./xxx.jpg") 则是:

<class 'PIL.JpegImagePlugin.JpegImageFile'> 类型的数据

# 问题是如何把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的图片进行处理并保存的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用心得之获得github代码库列表
Jun 25 Python
Python实现子类调用父类的方法
Nov 10 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
Python求出0~100以内的所有素数
Jan 23 Python
Python从函数参数类型引出元组实例分析
May 28 Python
解决Mac下使用python的坑
Aug 13 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
浅谈Python协程
Jun 17 Python
Pytest中skip和skipif的具体使用方法
Jun 30 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 #Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 #Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 #Python
Python学习笔记之文件的读写操作实例分析
Aug 07 #Python
详解python中__name__的意义以及作用
Aug 07 #Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 #Python
Python编程学习之如何判断3个数的大小
Aug 07 #Python
You might like
PHP中foreach()用法汇总
2015/07/02 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python引用DLL文件的方法
2015/05/11 Python
Python守护进程用法实例分析
2015/06/04 Python
python根据日期返回星期几的方法
2015/07/06 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
python接口自动化框架实战
2020/12/23 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
幼儿园门卫岗位职责
2014/02/14 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
道德演讲稿
2014/05/21 职场文书
园林技术专业求职信
2014/07/28 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
教师求职自荐信
2015/03/26 职场文书
歌舞青春观后感
2015/06/10 职场文书
法律服务所工作总结
2015/08/10 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
python字符串的一些常见实用操作
2022/04/06 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android