我正在React-Native-OpenPGP上进行加密和解密。我想从我的文件夹(本地图像获取)/图像URL中获取图像,然后将该图像转换为Uint8Array进行加密/解密。我是本机反应新手,无法找到更好的解决方案。链接也可以提供帮助。需要一个过程来提供图像路径并将其转换为Uint8Array。
此外,还需要一种将图像文件转换为二进制数据以进行加密/解密的解决方案。 openpgp提供两种方法来做到这一点吗?一种是通过字符串,另一种是通过Uint8Array数据?
答案 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中显示图像。