因为要做项目的”点评”功能,所以这次要开始在小程序里做上传图片功能了.
但是陆陆续续发现了一些问题.
- 一张250kb 左右的图片整个传图流程竟然需要三四秒的样子才能传完.
- 微信图片压缩 api: compressiMage 不但不起作用,反而压缩后传来的图片还大了点.试了几次均是如此.
先来分析下问题1.
但是我看了下.微信本身上传图片和返回结果速度是 ok 的.
瓶颈主要是在我把图片传给七牛到它返回图片的 url 地址这一段.
那.是不是因为图片太大了,才导致这么长时间呢?
查了下, 图片250kb 的样子.
那试试图片压缩吧.
一试顿时觉得微信的 compressImage 功能是个鸡肋
压缩后会返回一个新地址,但是我用 getFileInfo 查了下,调用这个方法后,上传的 jpg 不但没有变小,图片反而更大了,变成了260多kb, 就算我把压缩比率调成10(总分100,分值越低压缩得越厉害)
不过这不排除我上传的图片本来就不是原图而是压缩图,所以压缩不了.
那我就只能改进我小程序的流程了.
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
success: res => {
var filePath = res.tempFilePaths[0];
wx.getFileInfo({
filePath,
success(res) {
console.log("原文件大小", res.size);
}
});
wx.compressImage({
src: filePath, // 图片路径
quality: 10, // 压缩质量,
complete(res) {
console.log("压缩后返回");
console.log(res);
filePath = res.tempFilePath;
console.log("压缩图片回来啦");
wx.getFileInfo({
filePath,
success(res) {
console.log("压缩后文件大小", res.size);
}
});
}
});
// wx.showLoading({
// title: '提交中...',
// mask: true
// })
}
});
我算了下,我随意选择的这张图片大概是200多 kb,说大不大,说小不小.