最近做了一个含有二维码的海报到手机相册和分享到微信好友里面,图片是后端生成好的,传过来的格式是base64格式的,因为图片比较大,使用文档的保存和分享并没有什么用,有可能我用的不对吧,反正没有我想要的效果。
如何实现呢?我们先实现保存到手机相册在去实现分享哈。
安卓和ios都可以使用。机型我没有太多的去测试,反正我们公司的ios和安卓都可以。
一.base64图片保存到手机相册(封装)
export function base64DowImg(base64){
// 创建一个Bitmap是原生图片对象
const bitmap = new plus.nativeObj.Bitmap("test");
return new Promise((resolve,reject)=>{
// 使用loadBase64Data将base64字符串转换为bitmap文件对象
bitmap.loadBase64Data(base64,()=>{
const url = "_doc/" + new Date().getTime() + ".png"; // url为时间戳命名方式
// 再调用bimap.save方法,将图片文件存入手机存储
bitmap.save(url,{
overwrite: true, // 是否覆盖
},(i)=>{
//在这里使用文档说的保存到手机相册的方法
uni.saveImageToPhotosAlbum({
filePath: url,
success: function() {
resolve({
code: 0,
msg: '图片保存成功',
filePath: url
});
bitmap.clear()
},
fail: function (err) {
resolve({
code: 1,
msg: '图片保存失败',
filePath: ''
});
}
})
},(e)=>{
resolve({
code: 1,
msg: '图片保存失败',
filePath: ''
});
bitmap.clear()
})
})
})
}
没错就是这么简单,哈哈哈,其实记录一下只是给我自己做笔记,后台好ctrl+c和ctrl+v。到时候调用一下base64DowImg这个函数传一个base64图片就可以了,做到这里你的保存图片到手机相册就实现了,没有实现就是你传的base64图片有问题,反正我是实现了。
二.base64图片分享到微信好友(封装)
// 分享base64图片到微信
export function Base64ShareImg(base64){
// 创建一个Bitmap是原生图片对象
const bitmap = new plus.nativeObj.Bitmap("test");
return new Promise((resolve,reject)=>{
// 使用loadBase64Data将base64字符串转换为bitmap文件对象
bitmap.loadBase64Data(base64,()=>{
const url = "_share/" + new Date().getTime() + ".png"; // url为时间戳命名方式
// 再调用bimap.save方法,将图片文件存入手机存储
bitmap.save(url,{
overwrite: true, // 是否覆盖
},(i)=>{
//在这里使用文档说的分享的方法
uni.share({
provider: "weixin",
scene: "WXSceneSession",
type: 2,
imageUrl: url,
success: function (res) {
resolve({
code: 0,
msg: '',
filePath: url
});
},
fail: function (err) {
resolve({
code: 1,
msg: '图片分享失败',
filePath: ''
});
}
});
},(e)=>{
resolve({
code: 1,
msg: '图片分享失败',
filePath: ''
});
})
})
})
}
对,没错,就是你所看到的,代码基本没啥区别,只是里面的保存换成了分享,没办法,uni.share图片使用base64会保存,我只能这样的修改一些,跟保存图片用法是一样的。