uniapp 手机图片转base64
时间: 2023-11-15 13:55:11 浏览: 43
可以使用uniapp的`uni.getImageInfo`方法获取图片信息,然后使用`uni.getFileSystemManager`方法读取图片文件,最后使用`uni.arrayBufferToBase64`方法将图片转换为base64编码。
示例代码如下:
```
uni.getImageInfo({
src: '图片路径',
success: function (res) {
uni.getFileSystemManager().readFile({
filePath: res.path,
encoding: 'base64',
success: function (data) {
var base64 = 'data:image/png;base64,' + data.data;
console.log(base64);
}
});
}
});
```
其中,`src`为图片路径,`base64`为转换后的base64编码。
相关问题
uniapp base64转图片保存到手机
在uniapp中,将base64数据转换为图片并保存到手机可以通过以下步骤实现:
1. 将base64字符串转为二进制数组:
```javascript
let base64Str = 'data:image/png;base64,iVBORw0KGg...'; // 以png格式为例
let arr = base64Str.split(',');
let mime = arr[0].match(/:(.*?);/)[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
```
2. 创建Blob对象:
```javascript
let blob = new Blob([u8arr], { type: mime });
```
3. 创建URL对象:
```javascript
let url = window.URL.createObjectURL(blob);
```
4. 创建img标签并设置src属性:
```javascript
let img = new Image();
img.src = url;
```
5. 将图片保存到手机:
```javascript
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0, img.width, img.height);
canvas.toBlob(blob => {
let fileReader = new FileReader();
fileReader.onload = () => {
let buffer = new Uint8Array(fileReader.result);
plus.io.requestFileSystem(plus.io.PRIVATE_DOC, fs => {
let path = '_doc/' + Date.now() + '.png'; // 保存路径,可自定义
fs.root.getFile(path, { create: true }, fileEntry => {
fileEntry.createWriter(writer => {
writer.write(buffer);
writer.onwriteend = () => {
console.log('图片保存成功:' + path);
};
writer.onerror = err => {
console.error('图片保存失败:' + JSON.stringify(err));
};
});
}, err => {
console.error('获取文件失败:' + JSON.stringify(err));
});
}, err => {
console.error('获取文件系统失败:' + JSON.stringify(err));
});
};
fileReader.onerror = err => {
console.error('读取文件失败:' + JSON.stringify(err));
};
fileReader.readAsArrayBuffer(blob);
}, 'image/png');
```
注意:以上代码使用了uniapp的plus插件来保存图片到手机,需要在manifest.json文件中配置相关权限。如果不需要保存到手机,可以跳过第5步。
uniapp手机上传图片blob转成base64
你可以使用uniapp的`uni.getImageInfo`方法获取图片的信息,然后使用`uni.getFileSystemManager().readFile`方法将图片转换为base64格式。下面是一个示例代码:
```javascript
uni.getImageInfo({
src: imagePath,
success: function (res) {
uni.getFileSystemManager().readFile({
filePath: res.path,
encoding: 'base64',
success: function (data) {
var base64Image = 'data:image/' + res.type + ';base64,' + data.data;
console.log(base64Image);
},
fail: function (error) {
console.log(error);
}
});
},
fail: function (error) {
console.log(error);
}
});
```
在上面的代码中,`imagePath`是图片的路径。首先使用`uni.getImageInfo`方法获取图片的信息,然后使用`uni.getFileSystemManager().readFile`方法读取图片文件并将其转换为base64格式。最后,可以在成功回调函数中获取到转换后的base64图片数据。
请注意,这个方法需要在真机上测试,因为在H5端可能会受到跨域限制。