我给大家 解答下 直接 上 代码
主要的 是 将 照片 变为base64 字符串 然后 调用 bitmap.save方法 存储到指定路径 、
用了 imagetool这个插件(插件市场里面找)
第一步
takePhoto() {
// if (that.photoArr.length > that.photoArrCapacity) {
// that.tips('超出限制咯~');
// return 0;
// }
let _this = this; //作用域不同导致的
uni.chooseImage({
// count: that.photoArrCapacity - that.photoArr.length,
count: 6, //可以几张
success(res) {
console.log('res ==>', res);
res.tempFilePaths.forEach(item => {
//默认照片存储位置 是在(内部存储-》android-》data-》io.dcloud.HBuilder->apps->Hbuilder->doc->里面)
//根据路径将照片转换为base64 再将 base64 转换为 照片
console.log(item);
_this.imgUrlToBase64(item)
});
}
});
},
第2步
imgUrlToBase64(url){
console.log("开始转换");
pathToBase64(url)
.then(base64 => {
console.log("base64是"+base64)
//将base64 转换为 照片 并保存在自定义路径
this.saveHeadImgFile(base64);
})
.catch(error => {
console.error(error)
})
// 小程可用 APP不可用
// uni.getFileSystemManager().readFile({
// filePath: url, //选择图片返回的相对路径
// encoding: 'base64', //编码格式
// success: res => { //成功的回调
// console.log(res,'返回结果');
// let base64 = 'data:image/jpeg;base64,' + res.data //不加上这串字符,在页面无法显示的哦
// this.imgURL=base64
// },fail: (e) => {
// console.log("图片转换失败");
// }
// })
},
第3步 我这里保存在 系统相册和 指定路径的文件夹
//保存文件
saveHeadImgFile(base64) {
let _this = this; //作用域不同导致的
const bitmap = new plus.nativeObj.Bitmap("test");
bitmap.loadBase64Data(base64, function() {
// const url = "_doc/" +"测试/"+"测试"+ new Date().getTime() + ".png"; // url为时间戳命名方式
const url = "file://storage/emulated/0/离线地图/" + "老虎.png"; //保存为android 路径
console.log('saveHeadImgFile', url)
bitmap.save(url, {
overwrite: true, // 是否覆盖
// quality: 'quality' // 图片清晰度
}, (i) => {
//保存到系统相册
uni.saveImageToPhotosAlbum({
filePath: url,
success: function() {
_this.uni.showToast({
title: '图片保存成功',
icon: 'none'
})
alert("图片保存成功");
bitmap.clear()
}
});
//保存到 指定文件夹
}, (e) => {
_this.uni.showToast({
title: '图片保存失败',
icon: 'none'
})
alert("图片保存失败");
bitmap.clear()
});
}, (e) => {
_this.uni.showToast({
title: '图片保存失败',
icon: 'none'
})
alert("图片保存失败");
bitmap.clear()
});
6 个回复
1***@qq.com
我给大家 解答下 直接 上 代码
主要的 是 将 照片 变为base64 字符串 然后 调用 bitmap.save方法 存储到指定路径 、
用了 imagetool这个插件(插件市场里面找)
第一步
takePhoto() {
// if (that.photoArr.length > that.photoArrCapacity) {
// that.tips('超出限制咯~');
// return 0;
// }
let _this = this; //作用域不同导致的
uni.chooseImage({
// count: that.photoArrCapacity - that.photoArr.length,
count: 6, //可以几张
success(res) {
console.log('res ==>', res);
res.tempFilePaths.forEach(item => {
//默认照片存储位置 是在(内部存储-》android-》data-》io.dcloud.HBuilder->apps->Hbuilder->doc->里面)
//根据路径将照片转换为base64 再将 base64 转换为 照片
console.log(item);
_this.imgUrlToBase64(item)
第2步
imgUrlToBase64(url){
console.log("开始转换");
第3步 我这里保存在 系统相册和 指定路径的文件夹
1***@qq.com
同问
6***@qq.com
有示例,只有app、小程序能行
https://uniapp.dcloud.io/api/file/file?id=savefile
1***@qq.com
这个 您知道 如何 将照片
保存到 android 端的 指定文件夹吗
2022-01-24 08:58
6***@qq.com
回复 1***@qq.com: app可以使用 5+ api https://www.html5plus.org/doc/zh_cn/io.html
2022-01-24 13:52
下一个转弯
拍摄后图片会自动存入系统图片路径,用户又可见了,怎么才能不保存到系统图片路径呢(没有办法删除系统图片路径下的文件)?
1***@qq.com
最新的 方法 之前的 方法 不对 现在 应当使用 plus.io.moveto 方法
代码 如下
let that=this;
冤家
你这个会报安卓11版本不允许
2023-02-18 21:54
2***@qq.com
回复 冤家: 你好,请问后面你解决安卓11版本的问题了嘛
2023-04-25 16:19
HelloHell
使用image-tools实现,下载地址
https://github.com/zhetengbiji/image-tools/blob/master/index.js