图片上传压缩预览

这里的<img>标签是用来预览图片的:

<input id="upload" type="file" accept="image/*">
<img id="image" src="" alt="" />

读取上传文件:

let upload = document.querySelector('#upload');
let image = document.querySelector('#image');
let img = new Image();
let base64 = "";
upload.addEventListener('change', function (e) {
    let file = e.target.files[0];
    let reader = new FileReader();
    reader.onload = function (e) {
        let result = e.target.result;
        img.src = result;
        //压缩
        img.onload = compress;
    };
    reader.readAsDataURL(file);
});

利用canvas进行图片的压缩:

function compress() {
    let canvas = document.createElement('canvas');
    let context = canvas.getContext('2d');
    let width = img.width;
    let height = img.height;
    //如果图片大于四百万像素,计算压缩比并将大小压至400万以下
    let ratio;
    if ((ratio = width * height / 4000000) > 1) {
        ratio = Math.sqrt(ratio);
        width /= ratio;
        height /= ratio;
    } else {
        ratio = 1;
    }
    canvas.width = width;
    canvas.height = height;
    context.fillStyle = "#fff";
    context.fillRect(0, 0, canvas.width, canvas.height);
    context.drawImage(img, 0, 0, width, height);
    base64 = canvas.toDataURL('image/jpeg', 0.1);
    //图片预览
    image.src = base64;
}

我们比较两张图片压缩前后的区别:

compare.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 参考1-HTML5实现图片压缩上传功能参考2-移动前端—图片压缩上传实践参考3-移动端H5图片压缩上传 大体步骤 ...
  • 一、图片预览 图片预览有两种方式: 用 FileReader把图片转化为base64格式的数据嵌入到HTML中。 ...
    Lxylona阅读 2,935评论 0 4
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,825评论 1 45
  • 我好累啊,真的。 今天是入学的第二个月了,从未觉得生活如此痛苦。知道成绩了,尽管是全班排前的,但这并不是我想要...
    农场的鱼阅读 357评论 0 0
  • 策划死亡 杨一在策划一场死亡。 如果顺利的话,她可以成功在二十岁...
    陈不争_阅读 1,030评论 1 1

友情链接更多精彩内容