Получение 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 скоро добавит эту функциональность в свои рамки.