我正在尝试从CameraRoll获取图像的Base64,以便将其传递给第三方系统。我不想使用RN-Fetch-Blob。我尝试了ImageStore,但是它说我提供了无效的URI。
解决此问题的最佳方法是什么? React-Native有能力吗?还是我必须本地编写一些东西?
答案 0 :(得分:3)
以防万一其他人遇到同样的问题。...
我最终根本不使用RN-Fetch-Blob。尽管react-native不能提供直接访问图像的base64的方法,但是您可以通过ImageEditor裁剪图像来访问它。提取图像的宽度和高度,然后以相同的尺寸裁剪图像。这会将图像移至本地存储(ImageStore),并在裁剪后提供了一种提取图像的base64的方法。像这样...
_selectImage = (photo) => () => {
const { height, uri, width } = photo.node.image
ImageEditor.cropImage(uri,
{
offset: { x: 0, y: 0 },
size: { width: width, height: height },
},
(uri) => {
this._getBase64(uri)
},
(failure) => {
Alert.alert("Error: Unable to attach image")
})
}
_getBase64 = (uri) => {
ImageStore.getBase64ForTag(uri,
(base64) => {
this._onImageSelected(base64, uri)
},
(failure) => {
Alert.alert("Error: Unable to secure image data")
}
)
}
虽然不漂亮,但确实可以。希望React-Native会尽快将此功能添加到其框架中。