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 相关文章推荐
javascript Zifa FormValid 0.1表单验证 代码打包下载
Jun 08 Javascript
js 数组操作代码集锦
Apr 28 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
javascript刷新父页面的各种方法汇总
Sep 03 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
Dec 24 Javascript
jQuery+正则+文本框只能输入数字的实现方法
Oct 07 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
浅谈ES6 模板字符串的具体使用方法
Nov 07 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
Feb 03 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
Vue中全局变量的定义和使用
Jun 05 Javascript
vue实现滑动解锁功能
Mar 03 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
thinkphp模板用法和内容输出实例
2014/11/28 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
公司清洁工岗位职责
2013/12/14 职场文书
军训心得体会
2013/12/31 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
安全生产演讲稿
2014/05/09 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
2019入党申请书格式
2019/06/25 职场文书
tomcat下部署jenkins的方法
2022/05/06 Servers