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

时间:2019-03-06 07:51:21

标签: reactjs react-native openpgp uint8array openpgp.js

我正在React-Native-OpenPGP上进行加密和解密。我想从我的文件夹(本地图像获取)/图像URL中获取图像,然后将该图像转换为Uint8Array进行加密/解密。我是本机反应新手,无法找到更好的解决方案。链接也可以提供帮助。需要一个过程来提供图像路径并将其转换为Uint8Array。

此外,还需要一种将图像文件转换为二进制数据以进行加密/解密的解决方案。 openpgp提供两种方法来做到这一点吗?一种是通过字符串,另一种是通过Uint8Array数据?

1 个答案:

答案 0 :(得分:0)

花了一天的时间后,我设法通过b64-to-blob将图像文件转换为 BLOB 。这个attached link帮助我做到了。我是通过这种方式完成的:

步骤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));

}

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

} 

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

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