use*_*539 28 node.js graphicsmagick
我一直在尝试使用gm
NodeJS 的软件包创建一些缩略图,但我很幸运.我需要调整大于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!");
});
Run Code Online (Sandbox Code Playgroud)
我也尝试过调整大小选项.甚至有一个强制大小的选项,但输出的宽高比变得可怕......
gm('/path/to/image.jpg')
.resize(353, 257)
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});
Run Code Online (Sandbox Code Playgroud)
mik*_*rey 110
要gm
使用模块获得具有中心重力的经过调整大小的裁剪图像,您可以使用与此类似的内容:
gm('/path/to/image.jpg')
.resize('200', '200', '^')
.gravity('Center')
.crop('200', '200')
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});
Run Code Online (Sandbox Code Playgroud)
该函数的'^'
参数resize
将告诉GraphicsMagick使用高度和宽度作为最小值而不是默认行为maximum.生成的已调整大小的图像将具有指定尺寸的宽度或高度,而不符合尺寸的尺寸大于指定尺寸.
然后gravity
函数告诉GraphicsMagick以下crop
函数应该如何表现,这会将图像裁剪为最终大小.
您可以在gm
此处找到模块使用的GraphicsMagick选项的详细文档:http://www.graphicsmagick.org/GraphicsMagick.html
尝试使用imagemagick
NodeJS的软件包:https://github.com/yourdeveloper/node-imagemagick
im.crop({
srcPath: process.argv[2],
dstPath: 'cropped.' + process.argv[2].split('.').pop(),
width: 200,
height: 200,
quality: 1,
gravity: 'Center'
}, function(err, stdout, stderr){
if (err) throw err;
console.log('resized ' + process.argv[2].split('/').pop() + ' to fit within 200x200px');
});
Run Code Online (Sandbox Code Playgroud)
更新:请注意,node-imagemagick包在相当长的一段时间内没有更新.请考虑Freyday的答案,因为它是最新的.
归档时间: |
|
查看次数: |
29824 次 |
最近记录: |