NodeJS のパッケージを使用してサムネイルを作成しようとしましたgm
が、うまくいきませんでした。600 x 600 より大きい画像のサイズを変更する必要があります (指定された幅/高さから任意の幅/高さにすることができます)。しかし、サイズを 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! ');
});
ベストアンサー1
モジュールを使用して、中心重心でサイズ変更およびトリミングされた画像を実現するにはgm
、次のようなものを使用できます。
gm('/path/to/image.jpg')
.resize('200', '200', '^')
.gravity('Center')
.crop('200', '200')
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});
'^'
関数の引数はGraphicsMagickresize
に高さと幅を最小デフォルトの動作の代わりに、最大結果として得られるサイズ変更された画像の幅はまたは高さは指定された寸法になりますが、不適合寸法は指定されたサイズよりも大きくなります。
thengravity
関数は、GraphicsMagick に次のcrop
関数がどのように動作するかを指示し、画像を最終サイズにトリミングします。
モジュールで使用される GraphicsMagick オプションの詳細なドキュメントは、gm
以下で参照できます。http://www.graphicsmagick.org/GraphicsMagick.html