我是 React Native 的新手,但我已经使用 JavaScript 一段时间了。我正在尝试使用 Image.getSize 获取纵横比,以便我的图像看起来不错,但我不断收到以下警告:
Failed to get size for image: https://books.google.com/books/content?id=NYMD0AEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api
这是我实现 getSize 的代码:
const handleIsbnSearch = async () => {
const books = await isbnSearch(isbn);
if (books.error) {
return setBookSearch([]);
}
let bookInfo = [];
for (let b in books) {
const volInfo = books[b].volumeInfo
const {width, height} = await Image.getSize(volInfo.imageLinks.thumbnail);
const aspectRatio = width/height;
console.log(aspectRatio);
bookInfo.push({
title: volInfo.title,
subtitle: volInfo.subtitle,
authors: volInfo.authors,
publisher: volInfo.publisher,
publishedDate: volInfo.publishedDate,
description: volInfo.description,
categories: volInfo.categories,
thumbnail: volInfo.imageLinks.thumbnail,
aspectRatio: aspectRatio
})
}
setBookSearch(bookInfo);
}
我知道 uri 是正确的,因为我可以在应用程序中加载照片,但由于某种原因,它无法获取图像大小。
如有任何帮助,我们将不胜感激!
我尝试用“https”替换“http”,但这似乎没有什么区别。最初,我在调用
await
时没有使用 Image.getSize()
,并且必须从 forEach
循环更改为 for
循环。我还尝试在代码中的其他地方调用该方法,并尝试了不同的uri
。
使用下面的javascript我可以获取图像的大小,可能对你有帮助。
var url="https://books.google.com/books/content?id=NYMD0AEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api"
const getData = (url, cb) => {
const myImg = new Image();
myImg.onload = () => cb(null, myImg);
myImg.onerror = (err) => cb(err);
myImg.src = url;
};
getData(url, (err, myImg) => {
console.log(myImg.width + " X " + myImg.height);
});