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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
Javascript Cookie读写删除操作的函数
Mar 02 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
Mar 25 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 Javascript
js基于cookie记录来宾姓名的方法
Jul 19 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
angular ng-model 无法获取值的处理方法
Oct 02 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
vue 检测用户上传图片宽高的方法
Feb 06 Javascript
vue keep-alive的简单总结
Jan 25 Vue.js
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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
PHP安全配置
2006/12/06 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
python实现自动发送邮件
2018/06/20 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
python如何实现一个刷网页小程序
2018/11/27 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
运动会致辞稿50字
2014/02/04 职场文书
军训教官感言
2014/03/02 职场文书
四查四看整改措施
2014/09/19 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
SQL写法--行行比较
2021/08/23 SQL Server
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS