uni-app实现微信小程序、app端的图片转base64

准备:需要下载或者安装image-tools,下载地址https://ext.dcloud.net.cn/search?q=image-tools。本人是使用将文件下载本地的方法。

app效果图:(忽略样式,只看功能)

小程序效果图:(忽略样式,只看功能)

代码:.vue文件

<template>
	<view>
		<view @click="chooseImg">拍照</view>
		<view v-if="imgList.length > 0">
			<view v-for="(item,index) in imgList" :key="index">
				<image :src="item" mode=""></image>
			</view>
		</view>
	</view>
</template>

<script>
	import { pathToBase64, base64ToPath } from '../../utils/image-tools/index.js'
	export default {
		data() {
			return {
				imgList: [],
			}
		},
		methods:{
			chooseImg(){
				let that = this;
				uni.chooseImage({
				    success: (chooseImageRes) => {
				        const tempFilePaths = chooseImageRes.tempFilePaths;
						// #ifdef MP-WEIXIN
						uni.getFileSystemManager().readFile({
							filePath: tempFilePaths[0],
							encoding: 'base64',
							success: r => { 
								console.log(r.data)
								let base64 = 'data:image/jpeg;base64,'  + r.data;
								that.imgList.push(base64)
							}
						})
						// #endif
						// #ifdef APP-PLUS
						pathToBase64(tempFilePaths[0])
						  .then(base64 => {
							that.imgList.push(base64)
						  })
						  .catch(error => {
						    console.error(error)
						  })
						// #endif
				    }
				});
			}
		}
	}
</script>

<style>
</style>

注意点:

如果只在微信小程序中使用,方法内只是用

// #ifdef MP-WEIXIN
	uni.getFileSystemManager().readFile({
		filePath: tempFilePaths[0],
		encoding: 'base64',
		success: r => { 
		console.log(r.data)
		let base64 = 'data:image/jpeg;base64,'  + r.data;
		that.imgList.push(base64)
	}
})
// #endif

就可以达到要求,也就不用下载或者安装插件。此外需注意,该方法需要在返回的base64码前面拼接'data:image/jpeg;base64,'才能图片正常回显。

如果需要兼容到app,直接使用:

pathToBase64(tempFilePaths[0])
	.then(base64 => {
			that.imgList.push(base64)
	})
	.catch(error => {
			console.error(error)
})

安装或者下载插件后,直接使用,可以做到在app和微信小程序同时将图片转换为base64。此外需注意,该方法返回的base64带有'data:image/jpeg;base64,'所以可以直接用来图片回显。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值