我如何从 node.js sharp 模块缓冲区访问图像
How do i access an image from the node.js sharp module buffer
我是 node.js 和网络开发的新手,对 node.js sharp 模块有疑问。我想 resize/crop 使用 node.js sharp 模块的图像,将其存储到缓冲区并在之后访问它。
阅读 Sharp API 后,我想到了这个代码示例。
sharp('img.jpg').extract(extract).resize(height, width).toBuffer(function (err, data, info) {img = data;});
我认为变量 img 现在包含我的新图像。
我的第一个问题是我的假设是否正确。
如果这是正确的,我怎样才能在我的网站上显示新图像?如果可能的话,我想使用 HTML img 标签。但如果有更好更简单的方法,请随时告诉我。我不想将图像存储到本地文件。
感谢您的帮助!
没错。您首先需要使用 fs 将图像保存在磁盘上 ->
const saveImageOnDisk = (base64Image, imageName) =>
{
const buf = new Buffer(base64Image.replace(/^data:image\/\w+;base64,/, ''), 'base64');
fs.writeFile(`./${imageName}.png`, buf, {encoding: 'base64', flag: 'w'}, err => console.warn(err));
};
然后,您可以尝试使用 Sharp 进行一些操作来访问此图像(例如在节点服务器上显示图像)
exports.getImage = (req, res) =>
{
const fileName = `./${req.params.image}`;
const width = 200;
const height = 200;
sharp(fileName)
.resize(height, width)
.toBuffer()
.then((data) =>
{
//To display the image
res.writeHead(200, {
'Content-Type': 'image/png',
'Content-Length': data.length
});
return (res.end(data));
})
.catch(err => console.log(err));
};
所以,像这样的路线
app.route('/myImages/:image').get(Methods.getImage);
您可以通过简单的方式访问您的图像 url -> http://yourserver.xyz/myImages/imageX
我是 node.js 和网络开发的新手,对 node.js sharp 模块有疑问。我想 resize/crop 使用 node.js sharp 模块的图像,将其存储到缓冲区并在之后访问它。 阅读 Sharp API 后,我想到了这个代码示例。
sharp('img.jpg').extract(extract).resize(height, width).toBuffer(function (err, data, info) {img = data;});
我认为变量 img 现在包含我的新图像。 我的第一个问题是我的假设是否正确。 如果这是正确的,我怎样才能在我的网站上显示新图像?如果可能的话,我想使用 HTML img 标签。但如果有更好更简单的方法,请随时告诉我。我不想将图像存储到本地文件。
感谢您的帮助!
没错。您首先需要使用 fs 将图像保存在磁盘上 ->
const saveImageOnDisk = (base64Image, imageName) =>
{
const buf = new Buffer(base64Image.replace(/^data:image\/\w+;base64,/, ''), 'base64');
fs.writeFile(`./${imageName}.png`, buf, {encoding: 'base64', flag: 'w'}, err => console.warn(err));
};
然后,您可以尝试使用 Sharp 进行一些操作来访问此图像(例如在节点服务器上显示图像)
exports.getImage = (req, res) =>
{
const fileName = `./${req.params.image}`;
const width = 200;
const height = 200;
sharp(fileName)
.resize(height, width)
.toBuffer()
.then((data) =>
{
//To display the image
res.writeHead(200, {
'Content-Type': 'image/png',
'Content-Length': data.length
});
return (res.end(data));
})
.catch(err => console.log(err));
};
所以,像这样的路线
app.route('/myImages/:image').get(Methods.getImage);
您可以通过简单的方式访问您的图像 url -> http://yourserver.xyz/myImages/imageX