如何在 React Native 中使用图像文件并将其转换为 Uint8Array?

Dik*_*235 5 openpgp reactjs react-native openpgp.js uint8array

我正在研究用于加密和解密的React-Native-OpenPGP 。我想从我的文件夹(本地图像获取)/图像 url 中获取图像并将该图像转换为 Uint8Array 进行加密/解密。我是 React Native 的新手,无法找到更好的解决方案。链接也有帮助。需要一个过程来给出图像路径并将其转换为 Uint8Array。

此外还需要一个将图像文件转换为二进制数据以进行加密/解密的解决方案。openpgp 是否有可能提供两种方法,一种是通过 String,另一种是通过 Uint8Array 数据?

Dik*_*235 0

不知何故,花了一天时间后,我设法通过b64-to-blob将图像文件转换为BLOB。此附加链接帮助我做到了这一点。我是这样做的:

步骤1:从'react-native-image-base64'导入ImgToBase64;

步骤2:你必须安装npm i -S base-64(用于atob、btoa中的编码和解码)

第3步:从'base-64'导入{解码为atob,编码为btoa}

步骤4: var b64toBlob = require('b64-to-blob'); , var baseStringSample;

第 5 步:创建一个函数将图像转换为 base64

_convertImageToBaseSixFour() { 

    ImgToBase64.getBase64String('YOUR_IMAGE_PATH') // path to your image from local storage
  .then((base64String) => {
        baseStringSample = base64String,
        })
  .catch(err => Alert.alert('Error' + err));

}
Run Code Online (Sandbox Code Playgroud)

第6步:

// ****** CONVERT BASE64 TO BLOB ******* //

  _imageToBlob(){

    var byteCharacters = atob(baseStringSample);
    var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
    byteNumbers[i] = byteCharacters.charCodeAt(i);
    byteArray = new Uint8Array(byteNumbers);
    console.log("BYTEARRAY: " + byteArray);
}

} 
Run Code Online (Sandbox Code Playgroud)

步骤7: 然后生成密钥,通过openpgp库中的UInt8Array方法进行加密和解密

步骤8: 将解密的图像转换为base64,然后将base64转换为Image,在Imageview中显示图像。