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

IT技术 reactjs react-native react-native-android
2021-05-20 16:43:51

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

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

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

结果是

测试得到高度 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}`);
});

以下是我在 Redux Saga 中执行此操作的方法(我需要它阻塞直到它被竞争):

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

const { width, height } = yield getImageSize;

console.log(`width ${width}, height ${height}`);

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