节点js调整大小并从远程服务器保存图像。
您好, 如何在不保存本地然后保存的情况下调整图像大小。 当我运行波纹管代码时,我收到错误:“错误:输入缓冲区包含不受支持的图像格式” 代码:
var fs = require('fs');
var request = require('request');
var sharp = require('sharp');
function getImage()
{
request('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', function (err, res, body) {
var binary = Buffer.from(body.toString(), 'base64');
sharp(binary).resize(198, 110).toFile('test.jpg', (err, info ) =>
{
console.log('err: ', err);
console.log('info: ', info);
});
});
}
答案 0 :(得分:2)
我找到了解决问题的方法:
var resizer = sharp().resize(198, 110).toFile('test.jpg', (err, info) => {
console.log('err: ', err);
console.log('info: ', info);
});
request('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png').pipe(resizer);
答案 1 :(得分:0)
如果您可以确保https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png
返回图片,则可以尝试将响应直接传输到sharp而不是将响应转换为base64格式&处理
var resize = sharp(binary).resize(198, 110);
resize.on('error', function() {
//handle error
});
resize.on('finish', function() {
// done
});
request('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png')
.pipe(process);
更新
删除了.toFile('test.jpg');
部分