最近在开发租车小程序时,我使用了拍照识别身份证和驾驶证的功能。由于手机拍摄的照片文件大小通常较大,直接将图片上传到服务器可能会导致服务器运行负担过大,从而影响用户查看图片的速度。为了解决这个问题,我在小程序中对图片进行了压缩处理,然后再将压缩后的图片上传至服务器。这样可以大大提高图片识别的效率。

首先,我使用了vant weapp小程序组件中的图片上传组件。关于该组件的详细使用教程,可以参考vant weapp小程序组件实现图片上传文章。

接下来,我使用了wx.compressImage压缩图片接口,并设置了可选的压缩质量参数。这个接口用于压缩图片,可以将本地路径或代码包路径的图片进行压缩。通过调整quality参数,可以控制压缩质量,范围为0~100,数值越小,质量越低,压缩率越高(仅对jpg有效)。

示例代码如下:

```javascript

wx.compressImage({

src: '', // 图片地址

quality: 80 // 图片压缩质量

})

```

在这个例子中,我将vant weapp图片上传组件中上传后返回的临时图片路径放到了wx.compressImage的src属性中。通过设置的压缩质量,返回了压缩后图片的临时文件路径。最后,我将返回的tempFilePath路径用于上传到服务器接口中。

最后,我使用了wx.uploadFile将本地资源上传到服务器。示例代码如下:

```javascript

wx.uploadFile({

url: 'https://example.weixin.qq.com/upload', // 仅为示例,非真实的上传接口

filePath: tempFilePath,

name: 'file',

success (res) {

const data = res.data

}

})

```

在这个例子中,我将第二步中返回的tempFilePath路径放到了wx.uploadFile的filePath属性中。这样就完成了本地资源上传到服务器的操作。服务器接收到图片资源后会保存到服务器文件中,并返回给访问接口图片储存的地址。剩下的问题就交给自动化识别接口来处理了。