微信小程序web-view网页调用JSSDK的chooseImage方法
微信小程序中的网页界面由web-view组件显示,网页通过接入JSSDK能够调用微信小程序的一些功能,例如:跳转小程序页面、拍照、选择照片、录音等。一些功能直接接入JSSDK就能够使用,比如:跳转小程序页面,判断小程序环境。另一些方法需要注入权限,配置需要调用的方法才能使用:调取相册、拍照、录音等。下面小程序网页调用chooseImage方法选择图片:
1.安装JSSDK
JSSDK说明文档:微信JSSDK说明文档
npm install weixin-js-sdk
页面中引用:
import wx from 'weixin-js-sdk'
2.注册权限、配置方法
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: ['chooseImage'] // 必填,需要使用的JS接口列表
});
虽然是为微信小程序中显示的网页,但在该注册权限中使用的appId为公众号的appid
jsApiList中填入需要调用的方法,调用相册选择图片的方法为:chooseImage.因此填入。
3.调用方法
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
this.localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
}
});
调用wx.chooseImage 方法将在小程序中访问相册,选择照片。res.localIds可以作为img标签的src属性来显示图片。
4.兼容性(坑)
localIds可以作为img标签的src显示图片,但只适用于安卓。iOS端则不会显示。
iOS端显示选中的图片,有专门的方法:
wx.getLocalImgData({
localId: '', // 图片的localID
success: function (res) {
var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
}
});
将chooseImage方法返回的localid,通过该方法得到的localData数据,将该数据放入img标签的src中,iOS端才能显示图片。