gpt4 book ai didi

node.js - 调整大小和裁剪图像并保持纵横比 NodeJS 和 gm

转载 作者:IT老高 更新时间:2023-10-28 21:59:55 33 4
gpt4 key购买 nike

我一直在尝试使用 NodeJS 的 gm 包创建一些缩略图,但我很不走运。我需要调整大于 600x600 的图像大小(可以是任何宽度/高度,从给定的开始)但是当我将大小传递给 gm 时,它会创建一个与我请求的大小不同的图像。

例如,给定这段代码,我假设运行 node app/path/to/image.png 我将收到一个大小为 200x100 的图像,但我得到了一个180x100 或 200x90 的图像...

gm(fileLocation)
.thumb(200, 100, 'processed.' + process.argv[2].split('.').pop(), function() {
console.log("Done!");
});

我也尝试过调整大小选项。甚至还有一个强制大小的选项,但是输出的纵横比变得可怕......

gm('/path/to/image.jpg')
.resize(353, 257)
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});

最佳答案

要使用 gm 模块实现重心大小的裁剪图像,您可以使用类似于以下内容的方法:

gm('/path/to/image.jpg')
.resize('200', '200', '^')
.gravity('Center')
.crop('200', '200')
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});

resize 函数上的 '^' 参数将告诉 GraphicsMagick 使用高度和宽度作为 最小值 而不是默认行为, 最大。生成的调整大小的图像的宽度是您指定的尺寸,而不一致的尺寸大于指定的尺寸。

然后 gravity 函数告诉 GraphicsMagick 下面的 crop 函数应该如何表现,它将图像裁剪为最终大小。

您可以在此处找到 gm 模块使用的 GraphicsMagick 选项的详细文档:http://www.graphicsmagick.org/GraphicsMagick.html

关于node.js - 调整大小和裁剪图像并保持纵横比 NodeJS 和 gm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21591536/

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