2017-01-30 28 views
1

我想從Facebook資料圖片中獲取base64圖像。ImageStore.getBase64ForTag中的imageTag無效錯誤

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)) 
} 

我下面這個https://github.com/facebook/react-native/issues/1158描述的步驟:

  1. 使用Image.getSize(URI)來獲得圖像尺寸。

  2. 使用ImageEditor.cropImage(uri,cropData)在ImageStore中存儲圖像的副本(如果您傳遞步驟1中獲得的寬度和高度),那麼cropImage實際上不會裁剪圖像,儘管它可能仍然會製作它的副本。

  3. 使用ImageStore.getBase64ForTag(uri)獲取新圖像的base64數據(傳遞從cropImage函數獲得的URI,而不是原始數據)。

  4. 一旦完成刪除副本,不要忘記調用ImageStore.removeImageForTag(uri)。

雖然ImageEditor.cropImage返回一個有效的URI(RCT-形象店:// 0),ImageStore.getBase64ForTag失敗,原因:

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

我在做什麼錯?

回答

2

發現錯誤! imageSize應該像這樣設置:

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