Entonces, traté de usar la función proporcionada por React Native, que es Image.getSize. Pero cuando trato de usar alto y ancho fuera de la función, parece ser nulo. Aquí está mi código:
var theHeight = 0; Image.getSize(url,(height, width)=>{ theHeight = height; }) console.log("test get height "+theHeight);y el resultado seria
prueba obtener altura 0
¿Qué hice mal?
Hay dos problemas con su código. La primera es que Image.getSize invoca sus devoluciones de llamada de forma asincrónica. Debe poner su código que se basa en el tamaño de la imagen dentro de las devoluciones de llamada.
El segundo problema es que los argumentos para la devolución de llamada exitosa son (width, height) , no al revés.
Deberías escribir:
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}`); });Así es como hago esto dentro de Redux Saga (donde necesito que se bloquee hasta que se complete):
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}`);También puede llamar a la promesa con una espera (dentro de una función asíncrona), en caso de que alguien más lo necesite.