gpt4 book ai didi

android - Ionic 3 在 Android 中将 URL 读取为 base64

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:23 30 4
gpt4 key购买 nike

我正在使用 Ionic 3 Camera 和 File 插件来处理来自用户的 Android 图库应用的图像选择。该插件返回一个文件 uri,我想用它来使用 File 插件提取 base64 编码的图像,但是当我尝试从缓存目录中读取文件时,我得到了一个 NOT_FOUND_ERR。这是我的代码示例和一些日志输出:

this.camera.getPicture(this.getCameraOptionsForPhotoLibrary()).then((fileUri: string) => {

const fileNameIndex: number = fileUri.lastIndexOf('/') + 1;

// file:///storage/emulated/0/Android/data/com.myDomain.myApp/cache/
const cacheDirectoryFromFileUri = fileUri.substring(0, fileNameIndex );

// FB_IMG_1532921240445.jpg?1532982282636
const fileName = fileUri.substring(fileNameIndex);

this.file.readAsDataURL(cacheDirectoryFromFileUri, fileName).then(base64 => {
alert('base64 cacheDirectoryFromFileUri success: ' + JSON.stringify(base64));
}, err => {
alert('base64 cacheDirectoryFromFileUri err: ' + JSON.stringify(err));
});

请告诉我,我可以提供任何更多信息来帮助解决问题。

最佳答案

在尝试重现您的错误时,我没有收到 NOT_FOUND_ERR。

虽然,这个代码块

this.camera.getPicture(this.getCameraOptionsForPhotoLibrary()).then((fileUri: string) => {

const fileNameIndex: number = fileUri.lastIndexOf('/') + 1;

// file:///storage/emulated/0/Android/data/com.myDomain.myApp/cache/
const cacheDirectoryFromFileUri = fileUri.substring(0, fileNameIndex );

// FB_IMG_1532921240445.jpg?1532982282636
const fileName = fileUri.substring(fileNameIndex);

this.file.readAsDataURL(cacheDirectoryFromFileUri, fileName).then(base64 => {
alert('base64 cacheDirectoryFromFileUri success: ' + JSON.stringify(base64));
}, err => {
alert('base64 cacheDirectoryFromFileUri err: ' + JSON.stringify(err));
});
}

给我这个错误

base64 cacheDirectoryFromFileUri err: {"code":5,"message":"ENCODING_ERR"}

我正在使用这些选项

{
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.ALLMEDIA,
sourceType: this.camera.PictureSourceType.PHOTOLIBRARY
}

下面一行

const cacheDirectoryFromFileUri = fileUri.substring(0, fileNameIndex );

给我这样的东西

/storage/emulated/0/WhatsApp/Media/WhatsApp Images/

将该行更改为以下内容

const cacheDirectoryFromFileUri = 'file://'+fileUri.substring(0, fileNameIndex );

解决了问题。

或者,如果您在从相机拍摄图像后尝试从缓存中获取图像,并且想要获取 base64 编码的字符串,则可以使用 Camera.DestinationType : DATA_URL

destinationType: this.camera.DestinationType.DATA_URL

关于android - Ionic 3 在 Android 中将 URL 读取为 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601839/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com