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 相关文章推荐
jquery select操作的日期联动实现代码
Dec 06 Javascript
jquery 查找新建元素代码
Jul 06 Javascript
JavaScript中URL编码函数代码
Jan 11 Javascript
Jquery实现自定义tooltip示例代码
Feb 12 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
ES6新特性一: let和const命令详解
Apr 20 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
Dec 31 Javascript
原生Javascript+HTML5一步步实现拖拽排序
Jun 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 调试利器debug_print_backtrace()
2012/07/23 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
JS实现放烟花效果
2020/03/10 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
python杀死一个线程的方法
2015/09/06 Python
探究python中open函数的使用
2016/03/01 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
公司财务会计主管应聘求职信
2014/09/26 职场文书
工作作风建设心得体会
2014/10/22 职场文书
电子商务实训报告总结
2014/11/05 职场文书
2014年保洁工作总结
2014/11/24 职场文书
新员工试用期自我评价
2015/03/10 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
python中的getter与setter你了解吗
2022/03/24 Python
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang