2016-10-26 6 views
0

画像やbusboyを圧縮するimageminを使用する方法画像のミニプラグインに?例えば、ファイルフォームフィールドがexample-imageをコールしている場合、イメージフォームプラグインにそのファイルフォームフィールドをプラグインしてイメージを圧縮できるようにするにはどうすればいいですか?私は画像 <a href="https://github.com/imagemin/imagemin" rel="nofollow">https://github.com/imagemin/imagemin</a></p> <p>フォームを使用して、ユーザーのアップロードは、どのように私は、フォームからのファイルの詳細をプラグインしないときに問題があるを圧縮するには、以下のライブラリを使用したい

私が試した:

REQが急行/ nodejsからである

var filebus = new Busboy({ headers: req.headers }), 
    promises = []; 

    filebus.on('file', function(fieldname, file, filename, encoding, contentType) { 

     var fileBuffer = new Buffer(0), 
      s3ImgPath; 

     if (file) { 
      file.on('data', function (d) { 
       fileBuffer = Buffer.concat([fileBuffer, d]); 
      }).on('end', function() { 
       Imagemin.buffer(fileBuffer, { 
        plugins: [ 
         imageminMozjpeg(), 
         imageminPngquant({quality: '80'}) 
        ] 
       }).then(function (data) { 
        console.log(data[0]); 
        if (s3ImgPath) { 
         promises.push(this.pushImageToS3(s3ImgPath, data[0].data, contentType)); 
        } 
       }); 
      }.bind(this)); 
     } 
    }); 

をREQしかし、問題は、私はむしろ、私はS3にアップロードできるファイルのバッファを持っています。私はファイルをbuild/imagesフォルダに置いてはいけません。私は、ファイルのバッファを取得し、圧縮し、そのバッファをs3にアップロードしたいと思います。どのようにしてイメージminを使用して、html形式でファイルアップロードのバッファを取得し、それをs3にアップロードできますか?

+0

あなたがこれまで持っている任意のコードを表示してください。好ましくは、作業サーバとフォームを有するウェブページ。 – tcooc

+0

私はさらに詳しい情報を追加しました –

+0

それを使用してください - https://www.npmjs.com/package/compress-images –

答えて

0

出力パラメータのドキュメントには、オプションであることが示されています(ただし、関数宣言はありませんでしたが、混乱する可能性があります)。

出力

タイプ:文字列

は、あなたのファイルが書き込まれる場所への保存先フォルダを設定します。 宛先が指定されていない場合、ファイルは書き込まれません。

したがって、あなたは、ストレージにファイルの書き込みをオプトアウトすることができ、ちょうどメモリに出力を使用します。

imagemin([file.path], { 
    plugins: [ 
     imageminMozjpeg(), 
     imageminPngquant({quality: '65-80'}) 
    ] 
}).then(files => { 
    // upload file to S3 
}); 
+0

どうやってバスボーイでそれを使うのですか?あなたは知っていますか?上のコードを参照してください –

関連する問題

 関連する問題