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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
两个Javascript小tip资料
Nov 23 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
Web开发之JavaScript
Mar 29 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
基于jquery实现瀑布流布局
Jun 28 Javascript
Bootstrap警告框(Alert)插件使用方法
Mar 21 Javascript
Node解决简单重复问题系列之Excel内容的获取
Jan 02 Javascript
BootStrap模态框闪退问题实例代码详解
Dec 10 Javascript
JS实现盒子拖拽效果
Feb 06 Javascript
浅谈JS的原型和原型链
Jun 04 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版)
2006/10/09 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
Vue父组件调用子组件事件方法
2018/02/23 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
施工资料员岗位职责
2014/01/06 职场文书
工作会议欢迎词
2014/01/16 职场文书
关于运动会的口号
2014/06/07 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
后勤个人工作总结
2015/02/28 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python