我想从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中描述的步骤:
使用Image.getSize(uri)获取图像尺寸。
使用ImageEditor.cropImage(uri,cropData)在ImageStore中存储图像的副本(如果你传递了步骤1中获得的宽度和高度),那么cropImage实际上不会裁剪图像,虽然它仍然可以复制它。
使用ImageStore.getBase64ForTag(uri)获取新图像的base64数据(传递你从cropImage函数获得的uri,而不是原始函数。)
一旦完成删除副本,请不要忘记调用ImageStore.removeImageForTag(uri)。
虽然ImageEditor.cropImage返回一个有效的URI(rct-image-store:// 0),但ImageStore.getBase64ForTag失败的原因是:
code: "ERCTERRORDOMAIN0",
domain: "RCTErrorDomain",
message: "Invalid imageTag: rct-image-store://0"
我做错了什么?
答案 0 :(得分:2)
发现错误! imageSize应该像这样设置:
var imageSize = {
size: {
width,
height
},
offset: {
x: 0,
y: 0,
},
};