节点使用 url 调整图像大小而不保存图像

Node resize image with url without saving image

我有一项服务将 FB 图片 url 作为参数,检查它是否有效 url returns 一张图片,然后 returns url 如果所有检查都已通过。如果还传入了这些参数,我想添加一个调整图像大小的步骤,然后像以前一样通过 url return 调整大小的图像。

至少可以说,我在图像处理方面的经验很少,但到目前为止我的理解是使用像 sharp 这样的库,调整它的大小,将新大小的图像保存在某处,然后 return 新的 url到图片位置。

这似乎是最合乎逻辑的方法。但是,我想知道如果我不想在任何地方托管这些调整大小的图像,可能的解决方案是什么。有没有别的办法,或者我之前的理解是不是已经走上正轨了?

来自 Facebook 的示例 url 如下所示:https://scontent.xx.fbcdn.net/v/t1.0-9/16473924_10154471006092746_6242863207915608429_n.jpg?oh=4d7fb8fb162c0ff036810ee2969703f0&oe=5A25EE1C.

根据问题标题:

Node resize image with url without saving image

我认为您正在尝试根据对 'service' 的请求来处理图像,然后将其发回 post-processed 而无需存储它并使用磁盘 space ...

[JIMP] 获取、调整大小和 return 图像而不保存到磁盘:

这个关于请求服务器根“/”的例子,它获取一个图像,调整它的大小并将它作为响应发回,而不必将它存储在磁盘中。

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);