JS 压缩图片

 

如题

   // 压缩图片的函数
        function compressImage(image, quality, callback) {
            const canvas = document.createElement('canvas');
            const context = canvas.getContext('2d');
            canvas.width =200;
            canvas.height = 200;
            context.drawImage(image, 0, 0, canvas.width, canvas.height);

            canvas.toBlob(function (blob) {
                callback(blob);
            }, 'image/jpeg', quality);
        }

 

重点:

quality最小可以设定0.1,非常失真

canvas.width、 canvas.height可以将图片修改长宽

 

利用这3个条件,就可以把图片压的很小了

 

CODE:

// 回圈处理每个 img 元素
                imgElements.each(function () {
                    // 取得图片的路径
                    var imagePath = $(this).attr("src");
                    // 载入图片
                    var image = new Image();
                    image.src = imagePath;
                    if (image !== "" && image !== undefined) {
                        //PageMethods.SaveCapturedImage_TB_SALES_RECORDS_PHOTOS(imagePath, Success, Failure)
                        const originalSizeKB = Math.ceil((image.src.length));
                        // 压缩图片并使用 PageMethods.SaveCapturedImage 上传
                        compressImage(image, 0.3, function (compressedBlob) {
                            // 将压缩后的图片转换为Base64字串
                            const reader = new FileReader();
                            reader.onload = function () {
                                const compressedBase64 = reader.result;
                                const compressedSizeKB = Math.ceil((compressedBase64.length));

                                //alert('originalSizeKB ' + Math.ceil(originalSizeKB / 1024));
                                //alert('compressedSizeKB ' + Math.ceil(compressedSizeKB / 1024));

                                // 使用 PageMethods.SaveCapturedImage 上传压缩后的图片
                                PageMethods.SaveCapturedImage_TB_SALES_RECORDS_PHOTOS(compressedBase64, PHOTOSID)
                

                            };
                            reader.readAsDataURL(compressedBlob);
                        });
                    }
                });

 

 

自我LV~