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 easyui的tabs使用时的问题
Mar 23 Javascript
jQuery动画效果animate和scrollTop结合使用实例
Apr 02 Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
Jan 08 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
Vue实现简单计算器
Jan 20 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
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
JS 表单验证大全
2011/11/23 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
Python重新加载模块的实现方法
2018/10/16 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
英智兴达软件测试笔试题
2016/10/12 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
小露珠教学反思
2014/04/30 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Python 键盘事件详解
2021/11/11 Python
使用 Apache 反向代理的设置技巧
2022/01/18 Servers