2017-01-30 4 views
1

Ich versuche, ein Base64-Bild von Facebook Profilbild zu bekommen.Ungültiger imageTag-Fehler von ImageStore.getBase64ForTag

getImageFromFacebook() { 
const imageURL = this.props.userInfo.picture; 
    Image.getSize(imageURL, (width, height) => { 
    var imageSize = {width, height}; 
    ImageEditor.cropImage(imageURL, imageSize, (imageURI) => { 
    console.log(imageURI); 
    ImageStore.getBase64ForTag(imageURI, (base64Data) => { 
     this.setState({pictureBase64: base64Data}); 
     ImageStore.removeImageForTag(imageURI); 
    }, (reason) => console.log(reason)) 
    }, (reason) => console.log(reason)) 
    }, (reason) => console.log(reason)) 
} 

Ich verfolge die beschriebenen Schritte in diesem https://github.com/facebook/react-native/issues/1158:

  1. Verwenden Image.getSize (uri), um die Bildabmessungen zu erhalten.

  2. Verwenden Sie ImageEditor.cropImage (uri, cropData), um eine Kopie des Bildes im ImageStore zu speichern (wenn Sie die in Schritt 1 erhaltene Breite und Höhe übergeben), schneidet cropImage das Bild nicht ab, obwohl es kann noch eine Kopie davon machen.

  3. Verwenden Sie ImageStore.getBase64ForTag (uri), um die Base64-Daten des neuen Bildes zu erhalten (übergeben Sie das URI, das Sie von der Funktion cropImage erhalten haben, nicht das Original).

  4. Vergessen Sie nicht, ImageStore.removeImageForTag (uri) aufzurufen, nachdem Sie die Kopie gelöscht haben.

Obwohl die ImageEditor.cropImage eine gültige URI (RCT-Bild-Speicher: // 0) zurückgibt, schlägt fehl ImageStore.getBase64ForTag mit einem Grund:

code: "ERCTERRORDOMAIN0", 
domain: "RCTErrorDomain", 
message: "Invalid imageTag: rct-image-store://0" 

Was mache ich falsch?

Antwort

2

Fehler gefunden! imageSize sollte wie folgt eingestellt werden:

var imageSize = { 
    size: { 
     width, 
     height 
    }, 
    offset: { 
     x: 0, 
     y: 0, 
    }, 
    };