前端代码如下:

//---------------------压缩图片上传插件---------------------------
var ImgFileGet_class = function(msg){this.fileSelector = msg.fileSelector;  //file-input的选择器this.preViewImgSelector = msg.preViewImgSelector;  //图片预览选择器this.max_size = msg.max_size || false;  //图片最大大小,不设为无限度this.ajaxInterace = msg.ajaxInterace; //ajax上传图片插件var _this = this;$(this.fileSelector).change(function(){var reader = new FileReader();var file = this.files[0];reader.onload = function(e){var com_rate = 1;if((_this.max_size!==false) && (file.size>_this.max_size)){com_rate =  _this.max_size/file.size;}_this.compressImg(e.target.result,com_rate,function(src_data){_this.preViewImgSelector && $(_this.preViewImgSelector).attr('src',src_data);if(_this.ajaxInterace){_this.ajaxInterace(src_data);}});}reader.readAsDataURL(file);});this.compressImg = function(imgData,com_rate,onCompress){if(!imgData)return;onCompress = onCompress || function(){};com_rate = com_rate || 1;//压缩比率默认为1var img = new Image();img.onload = function(){ if(com_rate!=1) {//按最大高度等比缩放var rate = Math.sqrt(com_rate);img.width  *= rate; img.height *= rate; }var canvas = document.createElement('canvas');var ctx = canvas.getContext("2d"); canvas.width =  img.width; canvas.height = img.height; //ctx.drawImage(img, 0, 0);ctx.clearRect(0, 0, canvas.width, canvas.height); // canvas清屏//重置canvans宽高 canvas.width = img.width; canvas.height = img.height;ctx.drawImage(img, 0, 0, img.width, img.height); // 将图像绘制到canvas上 onCompress(canvas.toDataURL("image/jpeg"));//必须等压缩完才读取canvas值,否则canvas内容是黑帆布};//记住必须先绑定事件,才能设置src属性,否则img没内容可以画到canvasimg.src = imgData;}
}var ImgFileGet = new ImgFileGet_class({fileSelector:"#file-in",  //fileInput选择器preViewImgSelector:"#pre-img",  //预览图片max_size:200*1024,ajaxInterace:function(src_data){var cont_index = src_data.indexOf("base64,")+7;  //base64编码的图片,类型为jpegvar send_msg = {};send_msg.content = src_data.substring(cont_index);$.ajax({url:'http://.../save_data.php',type:'POST',data: send_msg,success:function(ret){}},'json');}
});

后端php代码如下:

<?php$img = base64_decode($_POST['content']);file_put_contents("test.jpg", $img);die(json_encode(['code'=>0,"msg"=>"end"]));
?>

利用H5Canvas进行前端图片压缩再上传笔记相关推荐

  1. js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传

    js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传 图片上传目录 js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传 html代码 js代码 html代码 <input type ...

  2. 移动前端—H5实现图片先压缩再上传

    在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上 ...

  3. 前端获取图片压缩后上传给后台

    在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上 ...

  4. Bmob+Luban(鲁班)压缩图片实现相册选择图片压缩后上传到Bmob后台Glide加载图片显示到本地

    源代码已上传CSDN:https://download.csdn.net/download/qq_16519957/11068345 因为本章需要跟前面的知识结合起来看所以就做了一个前面链接方便大家查 ...

  5. 返回图片_Vue 图片压缩并上传至服务器

    日常开发中经常会遇到上传图片的需求,随着手机的蓬勃发展,现在拍出来的照片分辨率越来越高,随之带来的问题就是图片占用空间越来越大,如果我们直接上传图片可能就会浪费很大一笔资源,本文主要讲解基于 Vue ...

  6. Vue 图片压缩并上传至服务器

    本文主要讲解基于 Vue + Vant ,实现移动端图片选择,并用 Canvas 压缩图片,最后上传至服务器.还会封装一个工具类,方便直接调用. 一.工具类封装 废话不多说先上代码,封装一个 Comp ...

  7. js图片压缩java上传,JS实现异步上传压缩图片

    摘要: 使用iframe来处理异步上传图片,在现在这个时代来说,多多少少都有点落后了!单单就凭AJAX和JS就不能做到异步上传图片了吗? 先看调用页面: 选择图片 var img; $("i ...

  8. android 快速实现图片压缩与上传

    由于最近项目更新功能比较的忙,也没时间去整理自己的知识点和管理自己的博客.在android对手机相册中的图片的压缩和上传到服务器上,这样的功能在每个app开发中都会有这样的需求.所以今天就对andro ...

  9. jqWEUI对图片压缩并上传

    jqWEUI样式,加图片上传到页面并预览 ------------------------------------------------- 补充:增加了图片压缩js  2018年6月29日 ---- ...

最新文章

  1. 东芝发布15nm SG5固态硬盘 容量高达1TB
  2. 《Redis实战》一第一部分 入门
  3. 一文掌握深度学习、神经网络和学习过程的历史
  4. 【软件工程】集成开发
  5. 修改Chrome浏览器默认背景颜色为浅绿色(转)
  6. oracle学习日志---返回RemoteOperationException: ERROR: Wrong password for user-错误的用户名密码-的错误的解决办法...
  7. 学习使用Ansj分词工具(一)
  8. hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)
  9. maven添加mirror_Maven配置setting.xml值Mirror与Repository区别(示例代码)
  10. php获取手机品牌,9 大国产手机品牌相机水印大比拼,哪款才是你的最爱?
  11. 安装LR提示缺少vc2005_sp1_with_atl_fix_redist
  12. ubuntu18.04下载显卡驱动+CUDA+CUDNN
  13. 如何共享OneNote笔记本
  14. linux程序的常用保护机制
  15. SQLPro for SQLite for Mac(SQLite编辑器)
  16. [博应用软件]如何正确安装路由器?
  17. SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存
  18. 不同cpu matlab,求助大神,为何不同机器运行MATLAB结果不同
  19. 什么是地狱回调 / 解决回调地狱
  20. 芯洲电源,一款可以升压降压DCDC开关稳压电源,车规级面世,文章是参数详解

热门文章

  1. 第八周 oj1039 小球自由下落
  2. 关于 UGUI 字体花屏或乱码。
  3. 实验8HiveUDF
  4. 逆向工程实验Lab1
  5. 如何成为一名Web前端开发人员?
  6. (30)整数直接与分数相乘
  7. 孟岩:可计算 NFT:概念、意义和核心思想
  8. Temporal IR_Chapter 3 (完)
  9. you can disable this check with the configuration ‘classloader.check-leaked-classloader‘
  10. 公司企业网站云服务器配置选择指南