从CameraRoll获取图像的Base64

时间:2018-08-11 19:17:31

标签: react-native react-native-android react-native-ios react-native-image

我正在尝试从CameraRoll获取图像的Base64,以便将其传递给第三方系统。我不想使用RN-Fetch-Blob。我尝试了ImageStore,但是它说我提供了无效的URI。

解决此问题的最佳方法是什么? React-Native有能力吗?还是我必须本地编写一些东西?

1 个答案:

答案 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会尽快将此功能添加到其框架中。