使用jQuery文件上传器压缩图片可以通过以下步骤实现:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-file-upload/3.1.0/jquery.fileupload.min.js"></script>
<input type="file" id="fileInput">
<img id="compressedImage" src="" alt="Compressed Image">
$(document).ready(function() {
$('#fileInput').fileupload({
url: 'upload.php', // 上传图片的服务器端处理脚本
dataType: 'json',
done: function(e, data) {
// 上传完成后的回调函数
if (data.result.success) {
// 获取压缩后的图片URL并显示
$('#compressedImage').attr('src', data.result.compressedImageUrl);
} else {
alert('图片上传失败');
}
},
add: function(e, data) {
// 选择图片后的回调函数
var file = data.files[0];
// 使用canvas进行图片压缩
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
var reader = new FileReader();
reader.onload = function(e) {
img.onload = function() {
var maxWidth = 800; // 压缩后的最大宽度
var maxHeight = 600; // 压缩后的最大高度
var width = img.width;
var height = img.height;
if (width > height) {
if (width > maxWidth) {
height *= maxWidth / width;
width = maxWidth;
}
} else {
if (height > maxHeight) {
width *= maxHeight / height;
height = maxHeight;
}
}
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
var compressedImageDataUrl = canvas.toDataURL('image/jpeg', 0.8); // 压缩后的图片数据URL
data.files[0] = dataURItoBlob(compressedImageDataUrl); // 替换原始文件为压缩后的文件
data.submit(); // 提交上传
};
img.src = e.target.result;
};
reader.readAsDataURL(file);
}
});
// 将数据URL转换为Blob对象
function dataURItoBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], { type: mimeString });
}
});
以上代码实现了以下功能:
注意:以上代码中的upload.php
是服务器端处理脚本的URL,需要根据实际情况进行修改。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
腾讯云对象存储(COS)是一种高可用、高可靠、强安全的云存储服务,适用于存储和处理各种类型的非结构化数据,包括图片、音视频、文档等。通过使用腾讯云对象存储(COS),可以方便地将压缩后的图片上传到云端,并获取图片的访问URL。
领取专属 10元无门槛券
手把手带您无忧上云