django 使用 PIL 压缩图片的例子


Posted in Python onAugust 16, 2019

在最近做项目时,发现服务器上的图片比较大,数据传输时会消耗很多流量,体验非常不好。为了缓解这一现象,决定使用gzip压缩数据流,但是发现gzip对于json数据的压缩效果很好,但对于图片的压缩效果很差。无奈,只能写一段代码,将服务器上的图片挨个压缩一下。

我的服务器上的程序,是用django写的,数据库为sqlite,图片文件存储在media目录下。

先看models.py,只有一个ImageField类型的变量picture,也就是一会压缩图片需要用到的变量。

class CrossPicture(models.Model):
  picture = models.ImageField(upload_to='cross_picture', blank=True, null=True)

Python有一个PIL库,可以处理图像,压缩部分的代码就是用PIL写的

def compressImage(request):

  picture_list = models.CrossPicture.objects.all()

  for cp in picture_list:
    image = Image.open(cp.picture) # 通过cp.picture 获得图像 
    width = image.width 
    height = image.height
    rate = 1.0 # 压缩率

    # 根据图像大小设置压缩率
    if width >= 2000 or height >= 2000:
      rate = 0.3
    elif width >= 1000 or height >= 1000:
      rate = 0.5
    elif width >= 500 or height >= 500:
      rate = 0.9  

    width = int(width * rate)  # 新的宽
    height = int(height * rate) # 新的高

    image.thumbnail((width, height), Image.ANTIALIAS) # 生成缩略图
    image.save('media/' + str(cp.picture), 'JPEG')  # 保存到原路径
    cp.save()
  return HttpResponse('compress ok')

以上这篇django 使用 PIL 压缩图片的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入学习python的yield和generator
Mar 10 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
django文档学习之applications使用详解
Jan 29 Python
Python3多线程基础知识点
Feb 19 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
Python3.5装饰器典型案例分析
Apr 30 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
Python xlrd/xlwt 创建excel文件及常用操作
Sep 24 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 #Python
Python 等分切分数据及规则命名的实例代码
Aug 16 #Python
Python 分发包中添加额外文件的方法
Aug 16 #Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 #Python
基于django传递数据到后端的例子
Aug 16 #Python
Django 拆分model和view的实现方法
Aug 16 #Python
利用Python实现kNN算法的代码
Aug 16 #Python
You might like
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
用PHP发电子邮件
2006/10/09 PHP
php中的时间显示
2007/01/18 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
Python NumPy库安装使用笔记
2015/05/18 Python
python可视化实现代码
2019/01/15 Python
Python Process多进程实现过程
2019/10/22 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
Python内置类型性能分析过程实例
2020/01/29 Python
在python3中实现更新界面
2020/02/21 Python
公司请假条范文
2014/04/11 职场文书
政治表现评语
2014/05/04 职场文书
白莲教口号
2014/06/18 职场文书
创先争优个人承诺书
2014/08/30 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
单位委托书怎么写
2014/09/21 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
优秀班主任申报材料
2014/12/16 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python