首页 > 其他分享 >js图片转base64,图片压缩

js图片转base64,图片压缩

时间:2025-01-09 16:31:52浏览次数:3  
标签:1024 canvas quality base64 js var 上传 图片

上传的文件需要转为base64作为参数提交到接口中,怎么办呢?

1.js图片转base64

toBase64(file){//转base64
    let base64=''
    const reader = new FileReader();  
    reader.readAsDataURL(file); 
    reader.onload = (e) => {  
        // 转换完成,获取Base64编码  
        this.imgBase64 = e.target.result;
        if(this.imgBase64){
            this.suofang(this.imgBase64,this.getImgList)
        }  
        // 这里可以根据需要对base64进行处理,比如存储到Vuex、Data等 
        return base64 
    }
},

使用该方法将上传的文件传入得到转化后的base64数据;

如果此时后端人员反映base64数据太大了,怎么办?压缩图片!

2.压缩图片

suofang(base64,callback) {//图片压缩函数
    //处理缩放,转格式
    var _img = new Image();
    _img.src = base64;
    _img.onload = function () {
        var quality=1;
        var _canvas = document.createElement("canvas");
        var w = this.width / 1.5;
        var h = this.height / 1.5;
        _canvas.setAttribute("width", w);
        _canvas.setAttribute("height", h);
        _canvas.getContext("2d").drawImage(this, 0, 0, w, h);
        var base64 = _canvas.toDataURL("image/jpeg",quality);
        while(base64.length>1024*1024*3){
            quality-=0.05;
            base64=_canvas.toDataURL("image/jpeg",quality);
        }
        base64=base64.substring(base64.indexOf (',')+1)
        callback(base64);//将压缩后的图片传入最终回调函数中执行
    }
},

使用该方法suofang(转化后的base64,上传方法),一旦缩放到达具体大小(可调整:1024*1024*3)触发上传方法直接上传无需再次手动上传。

标签:1024,canvas,quality,base64,js,var,上传,图片
From: https://blog.csdn.net/xiaolinwuhu/article/details/145036967

相关文章

  • 【Vue.js 2.x源码解析】第24章 Vue 是如何通过codegen把模板变成代码的
    第24章Vue是如何通过codegen把模板变成代码的一个例子带你搞懂AST到代码的过程一步步解析`generate`的生成逻辑1.`genElement`的实现2.`genFor`如何处理`v-for`的3.`genData`和`genChildren`的搭配写在最后Vue的编译过程,简单来说......
  • 如何在nginx上设置html/json不缓存
    一、简介前端项目发布以后,经常会遇到访问不到最新的版本,这主要是由于我们项目的入口文件index.html被浏览器或者代理缓存了,没有实时拉取到最新文件。本文将介绍一下在nginx上如何设置html文件不缓存。二、Cache-Control介绍2.1服务器可以在响应中使用的标准Cache-Control指......
  • JS 计算table 某列的合计
    $(function(){vartable=document.getElementById("testTable");//获取table对象varrows=table.rows;//获取行对象varcells=table.cells;//获取列对象varcolums=table.rows[0].cells.length;//获取列数 $(".count").empty();//每次加载时清空最后一列,防止二次加载数据时......
  • Three.js 数学工具:构建精确3D世界的基石
    文章目录前言一、向量(Vectors)二、矩阵(Matrices)三、四元数(Quaternions)四、欧拉角(EulerAngles)五、颜色(Colors)六、几何体生成器(GeometryGenerators)七、随机数生成(RandomNumberGeneration)八、时间和动画(TimeandAnimation)九、光线追踪与碰撞检测(RayTracingandCollisi......
  • 80个Three.js 3D模型资源
    Three.js3D模型资源”涵盖了在WebGL和JavaScript环境下使用three.js库进行3D建模和渲染的基础知识。Three.js是目前最流行的JavaScript库之一,用于创建和展示交互式的3D图形。它允许开发者在浏览器中直接构建复杂的三维场景,无需深入学习底层的WebGLAPI。Party1让我们了解......
  • 前端必知必会-Node.js 模块
    文章目录Node.js模块什么是Node.js中的模块?内置模块包含模块创建您自己的模块包含您自己的模块总结Node.js模块什么是Node.js中的模块?将模块视为与JavaScript库相同。您想要包含在应用程序中的一组函数。内置模块Node.js有一组内置模块,您无需进一步安......
  • 前端必知必会-Node.js HTTP 模块
    文章目录Node.jsHTTP模块内置HTTP模块Node.js作为Web服务器添加HTTP标头读取查询字符串拆分查询字符串总结Node.jsHTTP模块内置HTTP模块Node.js有一个名为HTTP的内置模块,它允许Node.js通过超文本传输​​协议(HTTP)传输数据。要包含HTTP模......
  • 前端必知必会-Node.js File System模块
    文章目录Node.js文件系统模块Node.js作为文件服务器创建文件更新文件删除文件重命名文件上传文件总结Node.js文件系统模块Node.js作为文件服务器Node.js文件系统模块允许您使用计算机上的文件系统。要包含文件系统模块,请使用require()方法:``jsvarfs=......
  • 《鸿蒙开发-答案之书》压缩图片到指定大小以下
    《鸿蒙开发-答案之书》压缩图片到指定大小以下往往上传图片到服务器时需要压缩图片,太大的会很慢还可能断开连接。现在说下如何压缩到指定大小以下直接上代码:exportasyncfunctioncompressedImagePath(fd:number,maxCompressedImageSize:number,name:string):Pro......
  • JS将docx转为html代码--Vue3(简易版)
    这两天突然接了一个把节气文章转成html页面的需求,本来只是需要多按几下ctrl+c,ctrl+v能解决的事,但是想想后续一年24个节气,就做个自动转换的工具吧。由于做软件还涉及到其他语言和配置环境,所以还是选择了web。首先创建一个vue3项目,我用的vite搭建的,不会的请自行移步到vite官网。......