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优缺点分析说明
Jun 09 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
Feb 05 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 Javascript
Javascript技术难点之apply,call与this之间的衔接
Dec 04 Javascript
Javascript中call,apply,bind方法的详解与总结
Dec 12 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
为输入框加入数字js校验代码分享
Nov 02 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
vue-router实现编程式导航的代码实例
Jan 19 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
JS中的算法与数据结构之列表(List)实例详解
Aug 16 Javascript
javascript实现简易计算器功能
Sep 23 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
用PHP调用数据库的存贮过程
2006/10/09 PHP
用session做客户验证时的注意事项
2006/10/09 PHP
php导出excel格式数据问题
2014/03/11 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
基于json的jquery地区联动效果代码
2011/07/06 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
js表头排序实现方法
2015/01/16 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
python 容器总结整理
2017/04/04 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python3学生名片管理v2.0版
2018/11/29 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
计算机专业个人简短的自我评价
2013/10/23 职场文书
会计实习自我鉴定
2013/12/04 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
认错检讨书
2014/10/02 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android