javascript - Node.js GraphicsMagick - 将 2 个图像连同位置和尺寸组合在一起
问题描述
我正在尝试使用 Node.js gm库将两个图像叠加在一起。对于最终图像,avatar.png
需要在bg.png
. 这是我开始的代码:
const image = gm("bg.png")
.composite("avatar.png");
这按它应该的方式工作,但我还需要将图像移动到一个x
, y
of 50
, 50
,所以我使用了这个geometry()
函数:
const image = gm("bg.png")
.composite("avatar.png")
.geometry("+50+50");
下一个问题是我需要将图像放大到200
x 200
,所以我尝试了一些方法来做到这一点:
const image = gm("bg.png")
.composite("avatar.png")
.geometry("200x200+50+50");
这最终缩放bg.png
到尽可能接近200
x 200
,同时仍然保留图像的纵横比。由于这不起作用,我尝试了这个:
const image = gm("bg.png")
.composite("avatar.png")
.resize("200x200")
.geometry("+50+50");
这只是忽略了该resize()
功能,根本没有缩放任何东西。交换的顺序,resize()
也geometry()
没有做任何事情。
我怎样才能缩放avatar.png
到200
x 200
?
解决方案
看起来任何被调用的函数都只适用于在构造函数中传递的图像,即使在调用复合之后也是如此。
您必须单独进行处理:
gm("bg.png")
.geometry("+50+50")
.toBuffer('PNG', function(err, buffer) {
if (err) return handle(err);
console.log('done!');
gm(buffer, 'image.png')
.composite('avatar.png')
.geometry("200x200+50+50!")
.write('output.png', function(err) {
console.log(err);
});
});
祝你好运!
推荐阅读
- javascript - React Native:如何从另一个组件调用函数
- java - 为什么只显示数组的最后一个元素?
- reactjs - 取数据完成后如何循环遍历数组?
- c - 尝试运行基本 C 程序时出现语法错误
- php - 如何在没有ucfirst()函数的情况下将php中单词的首字母大写
- rust - 我应该使用 Option<()> 而不是 bool,有开销吗?
- fonts - 嵌入字体中的连字转换问题
- php - PHP嵌套JSON编码加入数组
- python - Rock,Paper Scissors 游戏再次玩时得到相同的结果
- google-sheets - 我需要比较两张纸之间的值以找到匹配的项目