如何使用CollectionFS和graphicsmagick创build一个填充meteor某个区域的缩略图

现在我在这里使用代码: https : //github.com/CollectionFS/Meteor-CollectionFS#basic-example假设我想要一个缩略图100×100。

但是说我的图片是400×200,上面的代码会产生一个100×50的缩略图。

在这个例子中我想要发生的事情是将图像调整到200×100,然后剪裁到100×100。 我怎么做? 我怎样才能得到高度和宽度? 我知道我可以使用gm的大小函数,但是我不能把所有的callback包裹起来。

尝试:

gm(readStream, fileObj.name()).autoOrient().resize('100', '100', "^").gravity('Center').extent('100', '100').stream().pipe(writeStream);

autoOrient()会自动将任何手机照片转向正确的方向(否则有时候会横向摆放)。 通过resize^是一个选项,使图像的“最小边缘”重新调整为100.所以这将在“正确的”边缘留下“悬垂”。 它照顾你的形象真的很宽或很高。 extant然后裁剪您的图像去除悬垂。 gravity('Center')使得extant的裁剪效果出现在图像的中心。

唯一我还没有想到的是如何从图像的中心裁剪。 根据大多数例子,称gravity('center')应该这样做,但它不适合我。 它总是从angular落里收割。 它正在工作,但它看起来并不是最好的,因为大多数主题是在图像的中心。

编辑: gravity呼叫需要'Center'工作,而不是'center' 。 电话现在按预期工作。 还添加了autoOrient()调用。

这里是官方的gm文档解释选项。 但是它研究了如何在gm中完成node.js来计算上面的语法。