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 相关文章推荐
JavaScript中的事件处理
Jan 16 Javascript
jquery 图片上传按比例预览插件集合
May 28 Javascript
jquery获取div距离窗口和父级dv的距离示例
Oct 10 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
javascript跨域请求包装函数与用法示例
Nov 03 Javascript
Angular2自定义分页组件
Apr 19 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
Vue的watch和computed方法的使用及区别介绍
Sep 06 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
node app 打包工具pkg的具体使用
Jan 17 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
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
Python程序退出方式小结
2017/12/09 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python3 深浅copy对比详解
2019/08/12 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
会计自荐书
2013/12/02 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
外科护士长工作总结
2015/08/12 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
Python if else条件语句形式详解
2022/03/24 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python