【发布时间】:2021-03-28 20:12:57
【问题描述】:
我目前正在运行一个谷歌云函数,并试图在给定远程 URL 的情况下获取图像的宽度。我很难做到这一点。我曾尝试使用 axios 获取数据,但我不知道如何处理数据。我曾尝试使用 GraphicsMagick 和 Sharp,但两者似乎都存在接收远程 URL 的问题。尤其是 GraphicsMagick 似乎与 Cloud Functions 不兼容
这是我目前拥有的代码:
let res = await axios({ url: url, method: "get", timeout: 8000 });
let imgData = Buffer.from(res.data, "binary").toString("base64")
const imgInfo = await sharp(imgData).toBuffer();
严重错误:
[Error: Input file contains unsupported image format]
这不是很多,但我无法让 gm 或 sharp 成功工作。如果您知道获取图像高度/宽度的更好方法,请告诉我。
解决方案 进一步研究下面的解决方案,我所做的是:
let data = await checkUrl(images[i].attrs.src, url);
let imgBuffer = Buffer.from(data, "binary");
let imgBufferInfo = await sharp(imgBuffer)
.metadata()
.then(function (metadata) {
return metadata;
})
.catch(function (err) {
return err;
});
console.log("imgBuffer: " + imgBufferInfo.width);
【问题讨论】:
-
@Molda 不幸的是,据我所知,graphicsMagick 无法安装在 Cloud Functions 上