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 相关文章推荐
客户端脚本中常常出现的一些问题和调试技巧
Jan 09 Javascript
JavaScript实现Sleep函数的代码
Mar 04 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
Feb 26 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
JS实现商品筛选功能
Aug 19 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
微信小程序WebSocket实现聊天对话功能
Jul 06 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 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
FCKeditor的安装(PHP)
2007/01/13 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
js密码强度校验
2015/11/10 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
用python生成1000个txt文件的方法
2018/10/25 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
就业推荐表导师评语
2014/12/31 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
办公室日常管理制度
2015/08/04 职场文书
python如何获取网络数据
2021/04/11 Python
利用javaScript处理常用事件详解
2021/04/14 Javascript
redis实现排行榜功能
2021/05/24 Redis
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL