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扩展自写的 UI导航
Jan 13 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
Sep 22 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
jQuery文字轮播特效
Feb 12 Javascript
vue中$nextTick的用法讲解
Jan 17 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 Javascript
开发一个封装iframe的vue组件
Mar 29 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
第七节 类的静态成员 [7]
2006/10/09 PHP
php session处理的定制
2009/03/16 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
php判断当前操作系统类型
2015/10/28 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
完美的php分页类
2017/10/24 PHP
php和html的区别点详细总结
2019/09/24 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python简单读取json文件功能示例
2017/11/30 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python异步存储数据详解
2019/03/19 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
教师实习自我鉴定
2013/12/11 职场文书
安全生产标语
2014/06/06 职场文书
经济贸易系求职信
2014/08/04 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
法制教育主题班会
2015/08/13 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
python实现三次密码验证的示例
2021/04/29 Python
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL