Необходимо сжать и отобразить загруженное изображение - PullRequest
0 голосов
/ 06 мая 2020

В прошлый раз я просил помощи почти с той же проблемой. У меня есть веб-приложение, в котором пользователь загружает изображение, а затем оно должно быть сжато.

Итак, моя проблема в том, что я не понимаю, как сжимать загруженное изображение и показывать его на следующей странице.

Мой запрос на загрузку :

router.post('/upload', (request, response) => {
   upload(request, response, (error) => {
    if(error) {
        request.flash('error_message', 'Only images are allowed')
        response.redirect('/')
    }
    else {
        if(request.file == undefined) {
            request.flash('error_message', 'Image file was not been selected.')
            response.redirect('/')

            console.log(request.file)
        }
        else {
            request.flash('success_message', 'Image was uploaded successfully.')
            response.redirect(`/${request.file.filename}`);

            console.log(request.file)
        }
    }
  })
})

После загрузки изображение отображается на следующей странице с помощью параметра get:

router.get('/:filename', (request, response) => {
   let fileName = request.params.filename

   let pathToCheck = path.join(__dirname, '../public/uploads/' + fileName)
   if (fs.existsSync(pathToCheck)) {
       let imageDestination = `${request.protocol}://${request.headers.host}/uploads/${fileNam   e}`;
       response.render('compress', {
           userImage: imageDestination
       })

       var bitmap = imageBase64(pathToCheck);
       const encode = RLE.Encode(bitmap)

       Vibrant.from(pathToCheck).getPalette()
            .then(palette => {
                console.log(palette)
            })
   }
   else {
       response.send('Oops.')
   }
})

И теперь мне нужно сжать это изображение. Я хочу использовать imagemin с другими его плагинами сжатия. Но как мне сделать на нем изображение или ссылку?

router.post('/result/:filename', async (request, response) => {
   const compressedImage = await imagemin(['uploads/' + request.params.filename], {
       destination: 'compressed',
       plugins: [
           imageminMozjpeg(),
           imageminJpegtran(),

           imageminPngquant(),
           imageminOptipng(),

           imageminGiflossy(),
           imageminGifsicle(),

           imageminSvgo(),
           imageminWebp()
       ]
   })

   response.redirect('/result')
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...