美文网首页
JS使用Canvas压缩图片

JS使用Canvas压缩图片

作者: 一个小前端程序员 | 来源:发表于2021-09-17 15:54 被阅读0次

暂未实现压缩到指定文件大小
也可以是用于插件https://github.com/WangYuLue/image-conversion

/**
 * 压缩图片
 * @param {type} filePath 图片路径
 * @param {type} scale 压缩比例
 */
compressImage(filePath,scale){
    const vm = this;
    const img = new Image();  
    img.src = filePath;// 传过来的图片路径在这里用。  
    img.onload = function () {  
        const that = this;  
        console.log(that.width,that.height);
        //生成比例   
        let w = that.width*scale,  
            h = that.height*scale;
        console.log(w,h);
        //生成canvas  
        const canvas = document.createElement('canvas');
        const ctx = canvas.getContext('2d');
        canvas.width = w;
        canvas.height = h;
        ctx.drawImage(that, 0, 0, w, h);
        //1最清晰,越低越模糊。有一点不清楚这里明明设置的是jpeg。弹出 base64 开头的一段 data:image/png;却是png。哎开心就好,开心就好  
        const base64 = canvas.toDataURL('image/jpeg', 1);
        // console.log(base64);
        const blob = vm.base64ToBlob(base64,'image/jpeg')
        const href = window.URL.createObjectURL(blob); //图片压缩后的blob src
        console.log(href);
    }  
},
/**
 * base64转bolb
 * @param {type} urlData base64
 * @param {type} type 类型image/png||image/jpeg
 */
base64ToBlob(urlData, type) {
    let arr = urlData.split(',');
    let mime = arr[0].match(/:(.*?);/)[1] || type;
    console.log(mime);
    // 去掉url的头,并转化为byte
    let bytes = window.atob(arr[1]);
    // 处理异常,将ascii码小于0的转换为大于0
    let ab = new ArrayBuffer(bytes.length);
    // 生成视图(直接针对内存):8位无符号整数,长度1个字节
    let ia = new Uint8Array(ab);
    for (let i = 0; i < bytes.length; i++) {
      ia[i] = bytes.charCodeAt(i);
    }
    return new Blob([ab], {
      type: mime
    });
},

相关文章

  • 客户端图片压缩及上传

    技术要点 FileReader去读取图片 使用canvas的API去压缩 buffer处理后上传 HTML JS(...

  • JS使用Canvas压缩图片

    暂未实现压缩到指定文件大小也可以是用于插件https://github.com/WangYuLue/image-c...

  • 微信小程序上传图片压缩

    上传图片时图片过大,接口请求速度会很慢,利用canvas对图片进行压缩 wxml文件: js文件:

  • 使用antd进行头像压缩

    重要的事情说三遍canvas只支持jpg图片压缩,canvas只支持jpg图片压缩,canvas只支持jpg图片压...

  • js压缩上传图片

    一、html部分 二、js部分1.获取图片文件 2.利用canvas压缩图片,根据画布大小和图像质量压缩 3.通过...

  • uni 小程序 canvas截图保存到本地

    canvas 生产图片,保存到本地功能。 canvas 组件 js 画canvas js

  • Canvas与图片压缩

    之前写过一篇有关Canvas图片处理的文章,今天我们讲讲如何使用Canvas来压缩图片。 接下来我将以具体实例为大...

  • Web性能优化

    1、压缩及合并资源使用webpack或Parcel压缩图片、合并CSS和JS文件在线压缩图片网站:https://...

  • JS将带图表的页面导成word

    一、使用html2canvas将图表的canvas转为image图片; 二、使用js将页面导出; 三、如果是表格导...

  • js图片编码的方法

    使用Canvas进行编码 前提是图片没弄脏 使用FileReader 用于上传图片 js编码解码base64 脏图...

网友评论

      本文标题:JS使用Canvas压缩图片

      本文链接:https://www.haomeiwen.com/subject/ulxsgltx.html