可以下载图片,但无法使用Image.getSize()获取大小

问题描述 投票:0回答:1

我是 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 react-native
1个回答
0
投票

使用下面的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);
});

© www.soinside.com 2019 - 2024. All rights reserved.