Django 实现前端图片压缩功能的方法

思路:

<img alt="" src="/img/图片真实地址" ></img>

上面是一个典型的HTML中的图片,在django中,src对应的path会经过url进行过滤处理,所以可以通过写view过滤器的方式来实现图片压缩,代码如下

url

url(r'^img/(?P<path>(.+))/$',img),

view

def img(request,path):
  im=Image.open(settings.STATIC_ROOT+path)
  x,y=im.size
  im=im.resize((int(x/1.5),int(y/1.5)),Image.ANTIALIAS)
  response = HttpResponse(mimetype="image/png")
  #将PIL的image对象写入response中,通过response返回
  im.save(response, "PNG")
  return response

结论:通过类似于filter的方法可以实现图片压缩,且下一个请求该图片时,会直接调用缓存,并不会再次进行图片压缩。

注:对性能的影响会在验证完成后上传

以上这篇Django 实现前端图片压缩功能的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • django 使用 PIL 压缩图片的例子

    在最近做项目时,发现服务器上的图片比较大,数据传输时会消耗很多流量,体验非常不好.为了缓解这一现象,决定使用gzip压缩数据流,但是发现gzip对于json数据的压缩效果很好,但对于图片的压缩效果很差.无奈,只能写一段代码,将服务器上的图片挨个压缩一下. 我的服务器上的程序,是用django写的,数据库为sqlite,图片文件存储在media目录下. 先看models.py,只有一个ImageField类型的变量picture,也就是一会压缩图片需要用到的变量. class CrossPictu

  • Django 使用easy_thumbnails压缩上传的图片方法

    easy_thumbnails:A powerful, yet easy to implement thumbnailing application for Django 1.4+ 安装 pip install easy_thumbanils 在你的项目中配置 setting.py INSTALLED_APPS中添加 'easy_thumbanils' 如果Django1.7及以上,运行python manage.py migrate easy_thumbnails 否则,运行python ma

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

    1. 介绍 上传的图片文件:如 pic = request.FILES["picture"] # pic是 <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> 类型的数据 # 而pillow的Image.open("./xxx.jpg") 则是: <class 'PIL.JpegImagePlugin.JpegImageFile'> 类型的数据 # 问题是如何把InMem

  • Django 实现前端图片压缩功能的方法

    思路: <img alt="" src="/img/图片真实地址" ></img> 上面是一个典型的HTML中的图片,在django中,src对应的path会经过url进行过滤处理,所以可以通过写view过滤器的方式来实现图片压缩,代码如下 url url(r'^img/(?P<path>(.+))/$',img), view def img(request,path): im=Image.open(settings.STATIC

  • 移动前端图片压缩上传的实例

    摘要:之前在做一个小游戏平台项目,有个"用户中心"模块,就涉及到了头像上传的功能.在做移动端图片上传的时候,传的都是手机本地图片,而本地图片一般都相对比较大,拿现在的智能手机来说,平时拍很多图片都是两三兆的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上传显然不是一个好办法.所以上传之前进行压缩处理是必要的,在网上找了很多资料之后,尝试了很多方法,遇到了很多坑,比如安卓能够成功压缩上传图片,在ios上却上传不了,折腾了很久才发现ios的坑.一下这种已经进过实践证

  • Js利用Canvas实现图片压缩功能

    最近做的APP项目涉及到手机拍照上传图片,因为手机拍照的图片通常都比较大,所以上传的时候就会很慢.为此,需要对图片进行压缩处理来优化上传功能.以下是具体实现: /* * 图片压缩 * img 原始图片 * width 压缩后的宽度 * height 压缩后的高度 * ratio 压缩比率 */ function compress(img, width, height, ratio) { var canvas, ctx, img64; canvas = document.createElement

  • 项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)

    第一个项目终于上线了,是一个叫亲青筹的公益众筹平台,微信端,电脑端还有后台界面大部分都是我完成的,几个月过来,感觉收获了很多,觉得要总结一下. 首先想到的是图片上传的问题.在通常表单数据都是ajax上传的情况下,为了上传图片而去使用form表单感觉很蠢.然后那时候也没有想到用jquery form插件. 后台的同事给的方案是用iframe里写一个form表单,然后上传图片之后自动提交表单,他将图片在服务器上的地址以跳转页url的一部分,我再来截取的方式. 方案一:iframe+form表单 <f

  • django中的图片验证码功能

    python的验证码库(captcha) 将验证码做成这样: 是不是和各大网页的图片源地址是一样,话不多说,让我们看代码: 我是用django和python中的captcha库做成 的 创建一个captcha_image.py: from captcha.image import ImageCaptcha import random class Captcha_Get(): def __init__(self, CHAR_SET = ['0', '1', '2', '3', '4', '5',

  • Vue实现剪切板图片压缩功能

    监听剪切板粘贴事件,读取剪切板中的图片文件,转成base64通过img标签显示出来,此时可能会存在剪切板中图片过大,产生上传速度慢问题,接下来就跟大家分享下如何将base64图片进行压缩.先跟大家展示下最终实现的效果: 实现思路 监听剪切板粘贴事件 从事件回调中获取clipboardData中的image对象声明一个变量接收该对象 使用reader.readAsDataURL方法加载clipboardData中的image对象 在reader.onload回调中获取图片base64码 创建Ima

  • php基于ob_start(ob_gzhandler)实现网页压缩功能的方法

    本文实例讲述了php基于ob_start('ob_gzhandler')实现网页压缩功能的方法.分享给大家供大家参考,具体如下: PHP生成网页后传送给浏览器显示 ,页面的打开速度除了与用户的网速有关,往往也跟页面的大小有很关系,我们可以从网 页大小着手,以提高网页的响应速度. 下面的代码是一个压缩网页的例子,我们利用ob_gzip函数,使用ob_start将输出内容压缩后放到"缓冲区"后再输出 . PHP代码 //启用压缩 if(function_exists('ob_gzip'))

  • Django接受前端数据的几种方法总结

    背景 测试工具箱写到一半,今天遇到了一个前后端数据交互的问题,就一起做一下整理. 环境 -------------------------------------------------------- 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:PyCharm Django: 1.8.2 --------------------------------------------------------- 注: 我测试的是Get方法,POST方法也同

  • Android开发之图片旋转功能实现方法【基于Matrix】

    本文实例讲述了Android开发之图片旋转功能实现方法.分享给大家供大家参考,具体如下: 在Android中进行图像旋转需要使用Matrix,它包含了一个3*3的矩阵,专门用于进行图像变换匹配.Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作.Matrix没有机构体,它必须初始化,然后通过reset方法和set方法来实现. 首先介绍一下矩阵运算.加法和减法就不用说了,太简单了,对应位相加就好.图像处理,主要用到的是乘法 .下面是一个乘法的公式

  • Python基于PyGraphics包实现图片截取功能的方法

    本文实例讲述了Python基于PyGraphics包实现图片截取功能的方法.分享给大家供大家参考,具体如下: 先安安装PyGraphics包 (python import media模块) 有一段代码要import media,打开python自带的IDLE,输入: >>>import media 就会提示没有media这个模块! 原来media模块不是系统的标准模块,需要安装第三方软件后才能用.这个库是在PyGraphics里,不过PyGraphics依赖一些别的库.可以这样安装(可参

随机推荐