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

How to use and convert an image file into Uint8Array in react native?

我正在研究 React-Native-OpenPGP 的加密和解密。我想从我的文件夹(本地图像获取)/ Image url 中获取图像并将该图像转换为 Uint8Array for encryption/Decryption 。我是 React Native 的新手,找不到更好的解决方案。链接也可以提供帮助。需要一个过程给出一个图片路径,并将其转换成Uint8Array。

此外,还需要一个解决方案来将图像文件转换为二进制数据 Encryption/Decryption 。是否有可能因为 openpgp 提供了两种方法来做到这一点,一种是通过 String ,另一种是通过 Uint8Array 数据?

不知何故,在花了一天时间后,我设法通过 b64-to-blob. This attached link 帮助我将图像文件转换为 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'); , 变种 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));

}

第 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);
}

} 

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

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