如何在React Native上从uri获取图像的高度和宽度?

时间:2017-01-19 07:14:02

标签: reactjs react-native react-native-android

所以,我尝试使用React Native提供的函数,即Image.getSize。但是当我尝试在函数外使用高度和宽度时,它看起来是零。 这是我的代码:

var theHeight = 0;
Image.getSize(url,(height, width)=>{
 theHeight = height;
})

console.log("test get height "+theHeight);

,结果将是

  

测试获得高度0

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您的代码存在两个问题。第一个是Image.getSize异步调用它的回调。您需要在回调中放置依赖于图像大小的代码。

第二个问题是成功回调的参数是(width, height),而不是相反。

你应该写:

Image.getSize(url, (width, height) => {
  console.log(`The image dimensions are ${width}x${height}`);
}, (error) => {
  console.error(`Couldn't get the image size: ${error.message}`);
});

答案 1 :(得分:2)

这是我在Redux Saga中执行此操作的方式(我需要在此阻止它直到竞争):

const promise = new Promise(
      (resolve, reject) => {
        Image.getSize(filePath, (width, height) => {
          resolve({ width, height });
        });
      },
      error => reject(error)
    );

const { width, height } = yield promise;

您还可以通过await(在异步函数内部)调用promise,以防万一其他人需要它。