4

node.js と mongodb を使用して、Facebook のようなアプリケーションに取り組んでいます。node-mongodb-native driver wiki のすばらしい例を使用して、画像ファイルを GridFS に正常にアップロードし、それらを取得することができました。画像の最大の使用はサムネイルであるため、さまざまな SO 投稿から、大きいサイズのバージョンと小さいサイズのバージョンの両方を保持することが最速のソリューションになることがわかります。

だから私の質問は、同じ画像のさまざまなサイズのコピーを作成する方法です。SO では、 MongoDB GridFS で複数のサイズの画像を保存したり、オンザフライでサイズ変更を使用したりするなど、多くの質問が寄せられていますが、サイズを変更する方法について実際に答えているものはありません。

mongo シェルでは、fs.chunks コレクションで元のイメージのバイナリ データを確認できます。このバイナリ データを操作して、別の GridFS チャンクとして保存できる小さいサイズのイメージを取得する方法が必要です。OR他の方法。助けてください、ありがとう。

4

1 に答える 1

1

画像のサイズを縮小するには、GridFS に保存する前に画像をスケーリングする必要があります。GridFS は、イメージのスケーリングのプロセスとは関係ありません。

ただし、私の記憶が正しければ、GridFS バイナリ データのデータ ストリームを作成できます。node-gdは (とりわけ) 画像をスケーリングするためのライブラリであり、私の知る限り、ストリームを処理できます。

アップロードされたファイルを (GridFS に保存する前に) 直接操作できる場合、node-imagemagickは非常に単純なサイズ変更機能を提供します。

/* with express */
app.post('/image', function(req, res) {
    file = req.files[0];
    (require 'imagemagick')
        .resize({
            srcPath: file.path,
            dstPath: file.path + '-smaller.png',
            width: 50}, function(err, stdout, stderr) {
        /* You now have two files: file.path is the original, file.path + '-smaller.png' is the thumbnail. */
    });
});
于 2012-09-13T21:04:06.500 に答える