如何在 graphicsmagick 中控制扭曲和拉伸的图像 node.js

how to control the distorted and stretched image in graphicsmagick node.js

我希望通过调整图像大小来保持其纵横比不变来显示图像,但图像看起来被拉伸了。我有三张 50 x 50 的图像。我希望通过保持纵横比来调整左侧图像的大小。其他两个图像将与第一个图像平行上下显示。我认为 mosaic() 构建了四个块。但我想要三个块,在 fitst 块中,第一个图像会出现,它会一直调整大小直到结束,接下来的两个块,另外两个图像将上下显示并与第一个图像平行显示。下面是代码

gm()
        .in('-page', '+0+0')
        .in('-resize', '50x100!')
        .in('http://localhost:8080/image1')
        .in('-page', '+50+0')
        .in('http://localhost:8080/image2')
        .in('-page', '+50+50')
        .in('http://localhost:8080/image3')
        .mosaic()
        .write('C:/images/output.jpg', function (err) {
            if (err) console.log(err);
        });

我想要一张像下面这样的图片,但在保持纵横比的情况下,黑色图片看起来被拉伸了,我不希望它被拉伸,黑色图片应该覆盖整个左侧区域直到结束

如果我删除!然后图像看起来像,我想要一个如上图但没有拉伸的图像

我不使用 node 但我认为你可以适应这个:

制作我们的三张图片:

convert -size 50x50 -background black -fill white  -gravity center -pointsize 36 label:"1" image1.jpg
convert -size 50x50 -background red -fill white  -gravity center -pointsize 36 label:"2" image3.jpg
convert -size 50x50 -background red -fill white  -gravity center -pointsize 36 label:"3" image3.jpg

现在调整大小并排列:

convert image1.jpg -resize x100 -gravity center -extent 50x100 \( image2.jpg image3.jpg -append \) +append result.png

基本上,我使用 -resize x100 使 image1 100 像素高,然后使用 -gravity center -extent 50x100 从中间提取中央 50 像素宽的带。然后,在括号和 "on-the-side" 中,我正在加载 image2image3,并用 -append 将一个放在另一个下面。然后用 +append 将那对图像附加到原始图像的右侧,并将结果写出到 result.png.