要实现jquery压缩图片后再上传,需要使用HTML5的File API和Canvas API。

首先,使用File API获取用户选择的图片文件,然后使用Canvas API将图片压缩到指定大小。最后,将压缩后的图片转换成base64格式,再将其作为参数上传到服务器。

以下是一个示例代码:

// 获取用户选择的图片文件
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];

// 创建一个Image对象
var img = new Image();

// 设置Image对象的src属性,将图片文件转换成base64格式
var reader = new FileReader();
reader.onload = function(event){
    img.src = event.target.result;
};
reader.readAsDataURL(file);

// 压缩图片
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');

img.onload = function(){
    // 压缩后的图片宽度
    var maxWidth = 500;
    // 压缩后的图片高度
    var maxHeight = 500;
    // 原始图片的宽度
    var width = img.width;
    // 原始图片的高度
    var height = img.height;

    // 如果原始图片的宽度和高度都小于压缩后的宽度和高度,不需要压缩
    if (width <= maxWidth && height <= maxHeight) {
        // 直接上传原始图片
        upload(file);
        return;
    }

    // 计算压缩后的宽度和高度
    if (width > height) {
        if (width > maxWidth) {
            height *= maxWidth / width;
            width = maxWidth;
        }
    } else {
        if (height > maxHeight) {
            width *= maxHeight / height;
            height = maxHeight;
        }
    }

    // 设置canvas的宽度和高度
    canvas.width = width;
    canvas.height = height;

    // 绘制压缩后的图片
    ctx.drawImage(img, 0, 0, width, height);

    // 将压缩后的图片转换成base64格式
    var base64 = canvas.toDataURL('image/jpeg', 0.8);

    // 将base64格式的图片作为参数上传到服务器
    upload(base64);
};

// 上传图片
function upload(data){
    $.ajax({
        url: 'upload.php',
        type: 'POST',
        data: {image: data},
        success: function(response){
            console.log(response);
        }
    });
}

注意,上述代码中的upload.php是服务器端处理上传的脚本,需要根据实际情况进行修改。此外,压缩后的图片质量可以通过修改toDataURL()方法的第二个参数来控制,取值范围为0到1,值越小压缩后的图片越小,但质量也越差。

jquery 压缩图片后再上传实现

原文地址: http://www.cveoy.top/t/topic/bO5g 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录