ImageStore.getBase64ForTag中的imageTag错误无效

时间:2017-01-30 16:55:51

标签: react-native

我想从facebook个人资料图片中获取base64图片。

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

  5. 虽然ImageEditor.cropImage返回一个有效的URI(rct-image-store:// 0),但ImageStore.getBase64ForTag失败的原因是:

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

    我做错了什么?

1 个答案:

答案 0 :(得分:2)

发现错误! imageSize应该像这样设置:

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