gpt4 book ai didi

node.js - 在 Nodejs 中使用 gm 调整大小并合成两个或多个图像

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:05 25 4
gpt4 key购买 nike

给定两个图像,比如在 img(大小为 1024x768)文件夹下(img1.png 和 img2.png),我需要调整 img2 的大小(比如 300x300)并在 x 和 y 方向(比如 100、200)放置 img1从 img1 的左上角。最终结果应该是 1024x768 大小的图像。

使用 gm ( https://github.com/aheckmann/gm ),试过这个:

gm('./img/img1.png')
.composite('./img/img2.png')
.geometry('300x300+100+200')
.write('resultGM.png', (err) => {
if (err) console.log(err);
});

预期(由于整个操作链)它会生成 300x300 图像。然后我试了这个:

gm('./img/img1.png')
.composite(
gm('./img/img2.png')
.geometry('300x300+100+200')
)
.write('resultGM.png', (err) => {
if (err) console.log(err);
});

希望复合函数接受缓冲区,但没有机会,它只接受文件路径,并给出错误。在花了 2-3 小时阅读了一些帖子后(只能在这里找到一些讨论:How to do composite with gm node.js? 和这里:Combine two gm objects while resizing one of them in graphicsMagick for NodeJS(这个实际上没有回答问题),我找不到任何解决方案来做到这一点使用流或缓冲区在内存中进行操作。可以在写入临时文件时执行此操作。是否有人可以找到在内存中动态调整大小和合并图像的解决方案?

最佳答案

使用 ImageMagick 代替 GraphicMagic;

经过几个小时的搜索,我终于找到了如何使用 gm 合并两个调整大小和重新排序图层位置(上方、下方等)的图像。

让我们先看看这张图:

enter image description here

在 ImageMagick 的 compose 帮助页面翻了几分钟后,我看到了 DstOver 定位的用法。

http://www.imagemagick.org/Usage/compose/#dstover

所以,我已经尝试了下面的这段代码,它非常有效!

imageMagick(background)
.composite(image)
.in('-compose', 'Dst_Over')
.in('-geometry', '253x253+15+15')
.write(output, function (err) {
if (err) console.error(err);
else console.log('Compose OK!');
});

关于node.js - 在 Nodejs 中使用 gm 调整大小并合成两个或多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40613515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com