Nodejs中gm库的使用求助,英文不好API难理解求指导
Nodejs中gm库的使用求助,英文不好API难理解求指导
1.gm怎么将一个图片作为背景添加进来?并且可以设定他的位置? 2.gm怎么输出图片流?
4 回复
- 最好看 GraphicsMagick 自身的文档, gm 模块本身只是命令封装,猜测会涉及到 -composite 之类的参数
.write
可以传入 WriteStream 的
输出文件用.write(tmp_path,function(err){//your code }); 输出流用.toBuffer(‘jpeg’, function (err, stdout) {//your code });
当然可以。下面我会详细解释如何使用 gm
库来实现你提到的两个功能,并附上相应的示例代码。
1. 如何将一个图片作为背景添加进来,并设定它的位置?
假设你有一个背景图 background.png
和一个前景图 foreground.png
。你可以使用 gm
库将 foreground.png
添加到 background.png
上,并设定其位置。以下是如何做到这一点:
const gm = require('gm').subClass({ imageMagick: true });
// 创建一个新的图像,大小与背景图相同
gm()
.in('-size', '1000x800')
.in('-background', 'white')
.in('-gravity', 'center') // 设置图片居中
.in('-fill', 'none')
.in('-draw', 'image over 100,200 500,300 "foreground.png"') // 添加前景图,并设置其位置
.in('background.png')
.write('output.png', function (err) {
if (!err) console.log('完成');
else console.error(err);
});
2. 如何输出图片流?
如果你需要将处理后的图像直接输出为一个流,可以使用 .stream()
方法。以下是一个简单的例子:
const http = require('http');
http.createServer((req, res) => {
gm('input.png')
.resize(300, 300)
.stream(function (err, stdout, stderr) {
if (err) return console.error(err);
res.writeHead(200, { 'Content-Type': 'image/png' });
stdout.pipe(res);
});
}).listen(3000);
console.log('Server running at http://localhost:3000/');
在这段代码中,我们创建了一个 HTTP 服务器,并将输入的图片 input.png
缩放后通过响应流直接发送给客户端。
希望这些示例能帮助你更好地理解和使用 gm
库!