我无法将存储在数据库中的 ArrayBuffer 转换为图像

Gle*_*ito 1 javascript react-native

我的应用程序拍摄一张照片,将其转换为 ArrayBuffer 并存储在数据库中。然后我想检索该数据并将其转换为图像而不存储结果文件。

我看过 RN-Fetch-blob 和 FileReader 但不清楚一些事情。

以下是我在阅读了有关该问题的许多不同帖子后尝试使用变量组合的方法:

var arrayBufferView = new Uint8Array(expense.receipt);
const blob = new Blob(expense.receipt,"image/jpeg" ); 
//const blob = new Blob([expense.receipt],"image/jpeg" ); <-error
 //const blob = new Blob(arrayBufferView,"image/jpeg" ); <-error

//console.log (blob);
const fileReaderInstance = new FileReader();
fileReaderInstance.readAsDataURL(blob);  // tried 'readAsBufferArray' but RN complained that that function is not implemented.
fileReaderInstance.onload = () => {
 const base64data = fileReaderInstance.result;                
 console.log(base64data);
};
 var imageBase64 = 'data:'+"image/jpeg"+';base64,'+blob;
 console.log (imageBase64)
});
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

提前致谢。

joy*_*nks 5

将图像从数组缓冲区转换为:

斑点:

var arrayBufferView = new Uint8Array(expense.receipt);
const blob = new Blob([arrayBufferView], {type:"image/jpeg"} );
const img = createObjectURL(blob); //Remember to revokeObjectURL when done
Run Code Online (Sandbox Code Playgroud)

Base64:

var arrayBufferView = new Uint8Array(expense.receipt);
const charArr = arrayBufferView.reduce((data, byte)=> (data + String.fromCharCode(byte)), ''));
const img = btoa(charArr);
Run Code Online (Sandbox Code Playgroud)