uniapp图片压缩上传
时间: 2023-12-22 12:29:43 浏览: 517
在uni-app中实现图片压缩上传的方法如下:
1. 首先,你需要使用uni-app提供的`chooseImage`方法选择用户要上传的图片,并获取到图片的临时文件路径。
2. 接下来,你可以使用uni-app提供的`getImageInfo`方法获取到图片的宽度和高度信息。
3. 然后,根据你的需求,可以使用canvas来进行图片的压缩。你可以创建一个canvas元素,并设置其宽度和高度为你想要的压缩后的尺寸。
4. 将选择的图片绘制到canvas上,并使用`canvas.toDataURL`方法将canvas上的内容转换为base64格式的图片数据。
5. 最后,你可以将base64格式的图片数据作为参数,使用uni-app提供的`uploadFile`方法将图片上传到服务器。
下面是一个示例代码,演示了如何在uni-app中实现图片压缩上传:
```javascript
// 选择图片并获取临时文件路径
uni.chooseImage({
count: 1,
success: function(res) {
var tempFilePath = res.tempFilePaths[0];
// 获取图片信息
uni.getImageInfo({
src: tempFilePath,
success: function(info) {
var width = info.width;
var height = info.height;
// 创建canvas
var canvas = uni.createCanvasContext('compressCanvas');
canvas.width = 200; // 设置压缩后的宽度
canvas.height = height * (200 / width); // 根据宽度比例计算压缩后的高度
// 绘制图片到canvas
canvas.drawImage(tempFilePath, 0, 0, canvas.width, canvas.height);
// 将canvas内容转换为base64格式的图片数据
canvas.toDataURL('image/jpeg', 0.8, function(res) {
var base64Data = res.replace('data:image/jpeg;base64,', '');
// 将base64格式的图片数据上传到服务器
uni.uploadFile({
url: 'your_upload_url',
filePath: base64Data,
name: 'file',
success: function(res) {
console.log('上传成功', res);
},
fail: function(err) {
console.log('上传失败', err);
}
});
});
},
fail: function(err) {
console.log('获取图片信息失败', err);
}
});
},
fail: function(err) {
console.log('选择图片失败', err);
}
});
```
阅读全文