app应用base64图片保存到手机相册和分享到微信(uniapp)

最近做了一个含有二维码的海报到手机相册和分享到微信好友里面,图片是后端生成好的,传过来的格式是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会保存,我只能这样的修改一些,跟保存图片用法是一样的。

这些代码完全可以实现这两个功能,请大家复制的时候别复制少了。有用的话记得点赞!!!!不能白嫖!!!!!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值