目前我正在使用这里的代码:https://github.com/CollectionFS/Meteor-CollectionFS#basic-example
假设我想要一个100x100的缩略图。
但是,如果我的图片尺寸是400x200,上面的代码将生成一个100x50的缩略图。
在这个例子中,我希望发生的是将图像调整为200x100,然后剪裁为100x100。如何实现?如何获取高度和宽度?我知道可以使用gm的size函数,但我无法理解所有回调。
目前我正在使用这里的代码:https://github.com/CollectionFS/Meteor-CollectionFS#basic-example
假设我想要一个100x100的缩略图。
但是,如果我的图片尺寸是400x200,上面的代码将生成一个100x50的缩略图。
在这个例子中,我希望发生的是将图像调整为200x100,然后剪裁为100x100。如何实现?如何获取高度和宽度?我知道可以使用gm的size函数,但我无法理解所有回调。
尝试:
gm(readStream, fileObj.name()).autoOrient().resize('100', '100', "^").gravity('Center').extent('100', '100').stream().pipe(writeStream);
autoOrient()
会自动将任何手机照片旋转到正确的方向(否则它们有时会侧着拍摄)。传递给 resize
的 ^
是一个选项,使您的图像的“最小边缘”调整为 100。因此,这将在“正确”的边缘留下“悬挂”。它可以处理您的图像非常宽或非常高的情况。然后,extent
裁剪图像,移除过度。 gravity('Center')
使 extent
的裁剪效果发生在图像的中心。
我仍然没有弄清楚的唯一一件事是如何从图像的中心裁剪。根据大多数示例,调用 gravity('center')
应该可以做到这一点,但对我来说却不起作用。它总是从角落裁剪。它正在工作,只是看起来不太好,因为大多数主题都在图像的中心。
gravity
需要使用'Center'
,而不是'center'
。现在该调用可以正常工作了。还添加了autoOrient()
调用。
这里是官方gm文档,其中解释了选项。但是,为了弄清上述语法,需要在node.js中进行研究。
autoOrient()
命令,可以正确地调整手机(和其他类型)照片的方向。认为这也会很有用。 - evolross