Получение Base64 изображения из CameraRoll

Я пытаюсь получить Base64 изображения из CameraRoll, чтобы передать его сторонней системе. Я не хочу использовать RN-Fetch-Blob. Я пробовал ImageStore, но там указано, что я предоставляю неверный URI.

Какой лучший способ пойти по этому поводу? У React-Native есть средства? Или я должен написать что-то изначально?

1 ответ

На всякий случай, если кто-то еще столкнется с той же проблемой....

В итоге я вообще не использовал RN-Fetch-Blob. Хотя Reaction-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 скоро добавит эту функциональность в свои рамки.

Другие вопросы по тегам