gpt4 book ai didi

node.js - 使用 Axios/Sharp 下载图像并调整图像大小

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:45 29 4
gpt4 key购买 nike

我目前正在尝试使用 Axios 下载图像,然后调整结果大小并通过 GraphQL 解析器中的 Node 将其保存在本地。

这是我正在使用的代码块:

axios.get(url)
.then((response) => {
const { set, collector_number } = response.data;
const sourceUrl = response.data.image_uris.border_crop;
const filename = `${set}/${collector_number}.png`;
axios.get(sourceUrl, { responseType: 'arraybuffer' })
.then((res) => {
console.log(`Resizing Image!`)
sharp(res)
.resize(226, 321)
.toFile(`../cardimg/${filename}`)
.then(() => {
console.log(`Image downloaded and resized!`)
})
.catch((err) => {
console.log(`Couldn't process: ${err}`);
})
})
})

当我执行代码(通过 GraphQL Mutation)时,它会抛出一个错误,指出:输入文件丢失

不确定这是 Axios 的误用,还是我对 Sharp 的操作有问题。

有什么建议吗?我最初担心我需要弄乱来自 HTTP 请求的响应的格式,但从我收集到的信息来看,我做得正确。

提前致谢!

我已经使用console.log来确保它确实抓取了图像并且URL是正确的,所以已经经过测试,所以sourceUrl确实抓取了图像,我只是不知道如何正确地做任何事情-与-我正在抓取的数据。

最佳答案

axios 返回完整的响应正文,例如 statusheadersconfig。响应正文位于 .data 键中。所以在你的情况下它将是:

axios.get(..).then((res) => { sharp(res.data)})

此外, promise 内的 promise 被视为反模式,您可以轻松链接它。

let fileName;
axios.get(url)
.then((response) => {
const { set, collector_number } = response.data;
const sourceUrl = response.data.image_uris.border_crop;
filename = `${set}/${collector_number}.png`;
return axios.get(sourceUrl, { responseType: 'arraybuffer' })
})
.then((res) => {
console.log(`Resizing Image!`)
return sharp(res.data)
.resize(226, 321)
.toFile(`../cardimg/${filename}`)
})
.then(() => {
console.log(`Image downloaded and resized!`)
})
.catch((err) => {
console.log(`Couldn't process: ${err}`);
})

关于node.js - 使用 Axios/Sharp 下载图像并调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56890262/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com