主要压缩图片的方法

    function compress() {
        let fileObj = document.getElementById('file').files[0] //上传文件的对象
        let reader = new FileReader()
        reader.readAsDataURL(fileObj)
        reader.onload = function (e) {
            let image = new Image() //新建一个img标签(还没嵌入DOM节点)
            image.src = e.target.result
            image.onload = function () {
                let canvas = document.createElement('canvas'),
                    context = canvas.getContext('2d'),
                    imageWidth = image.width / 5, //压缩后图片的大小
                    imageHeight = image.height / 5,
                    data = ''

                canvas.width = imageWidth
                canvas.height = imageHeight

                context.drawImage(image, 0, 0, imageWidth, imageHeight)
                data = canvas.toDataURL('image/jpeg')

                //压缩完成 
                document.getElementById('img').src = data
                console.log(getImgSize(data))
            }
        }
    }

压缩后看图片的大小

    function getImgSize(str) {
        //获取base64图片大小,返回KB数字
        var str = str.replace('data:image/jpeg;base64,', ''); //这里根据自己上传图片的格式进行相应修改
        var strLength = str.length;
        var fileLength = parseInt(strLength - (strLength / 8) * 2);
        // 由字节转换为KB
        var size = "";
        size = (fileLength / 1024).toFixed(2);
        return parseInt(size);
    }

html

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>压缩图片demo</title>
    <style>
        img{
            width: 300px;
            height: 300px;
        }
    </style>
</head>

<body>
    <img id="img" src="">
    <input id="file" type="file" onchange="compress()">
</body>
<script>
    // 对图片进行压缩
    function compress() {
        let fileObj = document.getElementById('file').files[0] //上传文件的对象
        let reader = new FileReader()
        reader.readAsDataURL(fileObj)
        reader.onload = function (e) {
            let image = new Image() //新建一个img标签(还没嵌入DOM节点)
            image.src = e.target.result
            image.onload = function () {
                let canvas = document.createElement('canvas'),
                    context = canvas.getContext('2d'),
                    imageWidth = image.width / 5, //压缩后图片的大小
                    imageHeight = image.height / 5,
                    data = ''

                canvas.width = imageWidth
                canvas.height = imageHeight

                context.drawImage(image, 0, 0, imageWidth, imageHeight)
                data = canvas.toDataURL('image/jpeg')

                //压缩完成 
                document.getElementById('img').src = data
                console.log(getImgSize(data))
            }
        }
    }

    function getImgSize(str) {
        //获取base64图片大小,返回KB数字
        var str = str.replace('data:image/jpeg;base64,', ''); //这里根据自己上传图片的格式进行相应修改
        var strLength = str.length;
        var fileLength = parseInt(strLength - (strLength / 8) * 2);
        // 由字节转换为KB
        var size = "";
        size = (fileLength / 1024).toFixed(2);
        return parseInt(size);
    }
</script>

</html>