使用URL调整节点大小而无需保存图像

3
我有一个服务,它将FB图像网址作为参数,检查它是否是返回图像的有效网址,如果所有检查都通过,则返回该网址。如果还传入了这些参数,我想添加一个步骤来调整图像大小,然后像以前一样通过url返回调整大小的图像。
我的图像处理经验可以说是微乎其微,但到目前为止,我的理解是使用库(如sharp)进行调整大小,将其保存在某个地方,然后返回图像位置的新url。
那似乎是最合乎逻辑的方法。但是,如果我不想在任何地方托管这些调整大小的图像,可能的解决方案是什么?还是我之前的理解是正确的?
来自Facebook的示例url看起来像:https://scontent.xx.fbcdn.net/v/t1.0-9/16473924_10154471006092746_6242863207915608429_n.jpg?oh=4d7fb8fb162c0ff036810ee2969703f0&oe=5A25EE1C

调整图像大小,然后丢弃已调整大小的图像并返回获取图像的URL是没有意义的。当请求该URL时,您将不得不再次创建图像以便返回它。因此,我完全不清楚您真正需要什么帮助。 - jfriend00
@jfriend00 谢谢你的评论。我以为我已经充分披露了我在图像处理方面的经验,并且我还概述了我的逻辑解决方案,但我想知道是否有其他我不知道的方法,鉴于我在图像处理方面的经验。话虽如此,为了完全明确,答案可以是:a) 是的,你之前的理解是正确的,没有其他选择;或者b) 尝试这个替代方案。SO是一个很棒的交流和学习的地方,这也是我想做的。如果你觉得这是一个愚蠢的问题,我向你道歉。 - johnny_mac
抱歉,但我仍然不明白你在问什么。如果没有其他人过来帮忙,可能是因为他们不明白问题是什么。我希望你能编辑问题,让它更清楚地表达你需要帮助的内容。 - jfriend00
1个回答

10

根据问题的标题:

NodeJS 修改URL图片大小而不保存图片

我认为你正在尝试基于对你的“服务”的请求来操作图像,然后在不必存储它并使用磁盘空间的情况下进行后处理并发送回去...

[JIMP] 获取、调整大小并返回一张图像而不保存到磁盘中:

这个例子是在请求服务器根目录'/'时,它获取一张图片、调整其大小并将其作为响应发送回去,而无需将其存储在磁盘中。

const imgURL = "https://ichef.bbci.co.uk/news/660/cpsprodpb/37B5/production/_89716241_thinkstockphotos-523060154.jpg";
const express = require('express'); const app = express()
var Jimp = require("jimp")
app.get('/',function(req, res){
  Jimp.read(imgURL, function(err,img){
    if (err) throw err;
    img.resize(32, 32).getBase64( Jimp.AUTO , function(e,img64){
        if(e)throw e
        res.send('<img src="'+img64+'">')
    });
  });
});
app.listen(3000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接