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

时间:2017-08-30 16:19:53

标签: node.js image image-resizing

我有一个服务,它将FB图像网址作为参数,检查它是一个返回图像的有效网址,然后如果所有检查都已通过则返回网址。如果这些参数也被传入,我想添加一个步骤来调整图像的大小,然后像之前那样通过url返回调整大小的图像。

至少可以说,我对图像处理的体验很少,但到目前为止我的理解是使用像锐利的图书馆,调整大小,将新尺寸的图像保存到某处,然后将新网址返回到图像位置。 / p>

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

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

1 个答案:

答案 0 :(得分:5)

基于题目标题:

  

节点使用网址调整图片大小而不保存图片

我认为您正在尝试根据对“服务”的请求操作图像,然后将其发送回处理后而不必存储它并使用磁盘空间......

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

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

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