次のライブラリを使用して画像を圧縮したい https://github.com/imagemin/imagemin
問題は、ユーザーがフォームを使用してアップロードするときです。フォームから画像の最小プラグインにファイルの詳細をプラグインするにはどうすればよいですか? たとえば、ファイル フォーム フィールドが example-image と呼ばれる場合、そのファイル フォーム フィールドを image min プラグインにプラグインして、画像を圧縮できるようにするにはどうすればよいですか?
私は試した:
req は express/nodejs req からのものです
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));
}
});
しかし、問題は、S3 にアップロードできるファイルのバッファがあることです。ファイルを build/images フォルダーに入れたくありません。ファイルのバッファを取得して圧縮し、そのバッファを s3 にアップロードしたいと考えています。image min を使用して、html フォームを介してファイルアップロードのバッファを取得し、それを s3 にアップロードするにはどうすればよいですか?