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 当前全局变量和入口参数的所有属性
Jul 01 Python
python类和继承用法实例
Jul 07 Python
Python多继承顺序实例分析
May 26 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Python文件操作基础流程解析
Mar 19 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
详解Python中第三方库Faker
Sep 25 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作的文本留言本的例子(五)
2006/10/09 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
php获取汉字首字母的函数
2013/11/07 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
List all the Databases on a SQL Server
2007/06/21 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
法律专业应届本科毕业生求职信
2013/10/25 职场文书
投资意向协议书
2015/01/29 职场文书
运动与健康自我评价
2015/03/09 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书