我正在尝试从 CameraRoll 获取图像的 Base64,以便将其传递给第三方系统。我不想使用 RN-Fetch-Blob。我试过 ImageStore,但它说我提供的 URI 无效。
解决这个问题的最佳方法是什么?React-Native 有办法吗?还是我必须自己写一些东西?
我正在尝试从 CameraRoll 获取图像的 Base64,以便将其传递给第三方系统。我不想使用 RN-Fetch-Blob。我试过 ImageStore,但它说我提供的 URI 无效。
解决这个问题的最佳方法是什么?React-Native 有办法吗?还是我必须自己写一些东西?
以防万一其他人最终遇到同样的问题....
我最终根本没有使用 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 很快就会将这个功能添加到他们的框架中。