微信小程序长按图片保存到相册的3种方法
方法一: image + show-menu-by-longpress
image组件 + show-menu-by-longpress属性 ,image图片组件用法这也是最简单的一种,不用写js
就能实现功能。代码如下:
方法二:wx.previewImage
这次需要使用微信官方提供的wx.previewImage API的使用方法
// 核心js代码:
wx.previewImage({
urls: [网络图片地址,不支持本地路径],
current: 网络图片地址,不支持本地路径
})
方法三:longpress + wx.saveImageToPhotosAlbum + scope.writePhotosAlbum
微信官方文档是这样介绍longpress
的:手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发。小程序最低基础库版本1.5.0
。
既然longpress
是一个事件,所以跟bindtap
的使用方法是一样的。大致代码如下:
// 核心js代码:
handleLongPress(e){
console.log('e=', e)
this.setData({
longPressSrc: e.currentTarget.dataset.src
})
this.getWritePhotosAlbum(() => { /* 验证用户是否授权了保存图片到相册的权限 */
this.handleSaveImageToPhotosAlbum(); /* 调用封装好的保存图片到相册的代码 */
});
}
三、总结3种方法
上面介绍了三种长按保存图片到相册的方法,接下来再总结下各方法的优缺点。
方法 | 优点 | 缺点 |
---|---|---|
法一:image + show-menu-by-longpress | 简单,无需js | 存在兼容性,基础库2.7.0+ |
法二:wx.previewImage | 兼容性良好 | 由于是全屏预览模式,所以无法设置图片尺寸和去掉大面积黑色 |
法三:longpress + wx.saveImageToPhotosAlbum + scope.writePhotosAlbum | 想不出有啥优点 | 1、代码多!2、需要判断用户授权情况3、wx.saveImageToPhotosAlbum不支持网络图片 |
三种方法的优缺点已对比完毕,至于用哪种,就看看官自己选择了。
蓦然、回首,那人就在灯火阑珊处