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中的偏函数
Apr 27 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
Java分治归并排序算法实例详解
Dec 12 Python
Python语言生成水仙花数代码示例
Dec 18 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
python实现键盘输入的实操方法
Jul 16 Python
pytorch实现保证每次运行使用的随机数都相同
Feb 20 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
python用分数表示矩阵的方法实例
Jan 11 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
相对路径转化成绝对路径
2007/04/10 PHP
twig模板常用语句实例小结
2016/02/04 PHP
详解json在php中的应用
2018/09/30 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
python中PyQuery库用法分享
2021/01/15 Python
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
智能电子应届生求职信
2013/11/10 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
公司离职证明范本
2014/01/13 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
合同意向书范本
2014/07/30 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
结婚十年感言
2015/07/31 职场文书
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript