reactjs - React Native Expo konverter URL-bilde til Base64


Jeg jobber med en app som laster bilder fra API. Kravet til appen er å lagre disse bildene offline i appens database som er basert på SQLite. Den eneste måten jeg tror på er å konvertere bildene til en base64-streng, og det vil være enkelt for meg å vise bilder.

Jeg har brukt RN-Fetch-Blob-biblioteket før, men Expo støtter det ikke. Så jeg leter etter en måte å gjøre det på, men jeg har ikke funnet noe.

Jeg prøvde dette biblioteket react-native-image-base64

Men det fungerer ikke

ImgToBase64.getBase64String('http://i.imgur.com/XP2BE7q.jpg')
        .then(base64String => console.log(base64String))
        .catch(err => console.log(err));

Kan noen fortelle meg hvordan jeg kan konvertere et bilde til base64 i Expo?

Svar #1

Selv om dette ikke svarer på spørsmålet ditt, kan du vurdere å lagre bildet som BLOB-type i din SQLite-database. Du kan sjekke noen eksempler her: https://medium.com/@ericmorgan1/upload-images-to-firebase-in-expo-c4a7d4c46d06

Ideen er, ved å bruke Expo, kan vi bruke ImagePicker for å få URI-en, og deretter bruke fetch()-API-et for å hente BLOB-dataene.

Når vi får BLOB-dataene, kan vi lagre dem i SQLite-databasen vår.

Eksempel :

const imageUrl = 'http://i.imgur.com/XP2BE7q.jpg';
const response = await fetch(imageUrl);
// This will be the blob data that you will have to store inside your SQLite DB
const blob = await response.blob();