Как использовать imagemin для сжатия изображений и официанта

Я хочу использовать следующую библиотеку для сжатия изображений https://github.com/imagemin/imagemin

Проблема заключается в том, что когда пользователь загружает данные с помощью формы, как мне подключить сведения о файле из формы к минимальному плагину изображения? Например, если поле формы файла называется example-image, как подключить это поле формы файла к плагину image min, чтобы он мог сжимать изображения?

Я старался:

req взят из экспресс/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. Как я могу использовать изображение min, чтобы получить буфер загрузки файла через html-форму и загрузить его на s3?


person Brown Limie    schedule 26.10.2016    source источник
comment
Пожалуйста, покажите любой код, который у вас есть. Желательно рабочий сервер и веб-страницу с формой.   -  person tcooc    schedule 26.10.2016
comment
я добавил больше информации   -  person Brown Limie    schedule 26.10.2016
comment
Используйте его — npmjs.com/package/compress-images   -  person Юрий Светлов    schedule 08.11.2017


Ответы (1)


Документация для выходного параметра показывает, что он является необязательным (хотя, по общему признанию, объявление функции этого не сделало, что может сбивать с толку).

выход

Тип: строка

Установите папку назначения, в которую будут записаны ваши файлы. Если место назначения не указано, файлы не будут записаны.

Поэтому вы можете отказаться от записи файлов в хранилище и просто использовать вывод в память:

imagemin([file.path], {
  plugins: [
      imageminMozjpeg(),
      imageminPngquant({quality: '65-80'})
  ]
}).then(files => {
  // upload file to S3
});
person tcooc    schedule 26.10.2016
comment
как мы используем это с официантом? вы знаете? См. код выше - person Brown Limie; 27.10.2016