HTML5 JS压缩图片并获取图片BASE64编码上传


Posted in Javascript onNovember 16, 2020

本文实例为大家分享了HTML5 JS压缩图片,并获取图片BASE64编码上传的方法,供大家参考,具体内容如下

基本过程

1) 调用 FileReader 的 reader.readAsDataURL(img); 方法, 在其onload事件中, 将用户选择的图片读入 Image对象.

2) 在image对象的 onload 事件中, 通过 canvas 的 canvas.getContext('2d') 的 drawImage 方法, 将Image 改变大小绘制到canvas上.

3) 通过 canvas.toDataURL("image/jpeg", 0.1); 方法, 将图片变成base64字符串, 传入服务端.

var vueImg = new Vue({
  el: "#divCarImages",
  data: { model: { carId: '@carId', imageTitle:'',img64:'' }, images: [] },
  methods: {
   imageHandle: function () {
    var fup = $("#fileImg")[0];

    var img = fup.files[0];

    var image = new Image();
    var canvas = $("#canvas")[0];//document.createElement("canvas");
    var ctx = canvas.getContext('2d');

    image.onload = function () {
     var w = image.naturalWidth,
      h = image.naturalHeight;

     var toSize = 400;
     canvas.width = toSize;
     canvas.height = toSize;

     var w2 = toSize, h2 = toSize;
     if (w > h) {
      h2 = h / w * toSize;
     } else {
      w2 = w / h * toSize;
     }

     ctx.drawImage(image, 0, 0, w, h, 0, 0, w2, h2);
      
    }

    // 判断是否图片
    if (!img) {
     return;
    }

    // 判断图片格式
    if (!(img.type.indexOf('image') == 0 && img.type && /\.(?:jpg|png|gif)$/.test(img.name))) {
     alert('图片只能是jpg,gif,png');
     return;
    }

    var reader = new FileReader();

    reader.onload = function (e) { // reader onload start
     var url = reader.result;
     image.src = url;

    } // reader onload end

    reader.readAsDataURL(img);
   }

  }
 });
function uploadImg() {
  var canvas = $("#canvas")[0];
  vueImg.model.img64 = canvas.toDataURL("image/jpeg", 0.1);
  //$("#testMsg").html(imgData.length);
      
  // ajax 上传图片
  $.post("@Url.Content("~/AliOss/SaveCarImage")", vueImg.model , function (ret) {

   parseAjaxData(data, function (model) {
    console.log(model.Path);
    alert(model.Path);
    $('#showimg').html('<img src="' + model.Path + '">');
   })  
  }, 'json');
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE6下JS动态设置图片src地址问题
Jan 08 Javascript
jquery 元素相对定位代码
Oct 15 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
AngularJS递归指令实现Tree View效果示例
Nov 07 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
JS实现DOM删除节点操作示例
Apr 04 Javascript
ES6关于Promise的用法详解
May 07 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
react PropTypes校验传递的值操作示例
Apr 28 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 12 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 #Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 #Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 #Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 #Javascript
JavaScript中绑定事件的三种方式及去除绑定
Nov 05 #Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 #Javascript
Javascript 普通函数和构造函数的区别
Nov 05 #Javascript
You might like
php文件上传原理与实现方法详解
2019/12/20 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
在Python中使用HTML模版的教程
2015/04/29 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python占用的内存优化教程
2019/07/28 Python
python datetime中strptime用法详解
2019/08/29 Python
Keras 使用 Lambda层详解
2020/06/10 Python
python 读取串口数据的示例
2020/11/09 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
中专生自荐信
2013/10/12 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
员工考核管理制度
2014/02/02 职场文书
治庸问责心得体会
2014/09/12 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
导游词开场白
2015/01/31 职场文书
企业宣传语大全
2015/07/13 职场文书
中学音乐课教学反思
2016/02/18 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL