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 14 Python
Python读取键盘输入的2种方法
Jun 16 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
pymongo insert_many 批量插入的实例
Dec 05 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
Python如何给函数库增加日志功能
2020/08/04 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
python实现计算图形面积
2021/02/22 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
党员对照检查材料
2014/09/22 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
我去timi了,一起去timi是什么意思?
2022/04/13 杂记