From 5ffa1ec83927b5c36f2497d005b0763656f90465 Mon Sep 17 00:00:00 2001 From: dakerboul Date: Thu, 13 Mar 2025 12:10:21 +0100 Subject: [PATCH] =?UTF-8?q?Ajouter=20une=20fonction=20de=20pr=C3=A9visuali?= =?UTF-8?q?sation=20d'image=20pour=20redimensionner=20et=20renvoyer=20une?= =?UTF-8?q?=20image=20JPEG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/imageRoutes.js | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/routes/imageRoutes.js b/routes/imageRoutes.js index e4dec80..6328f68 100644 --- a/routes/imageRoutes.js +++ b/routes/imageRoutes.js @@ -62,6 +62,26 @@ router.get('/images/:measurementId', (req, res) => { }); }); +async function previewImage(imagePath, factor, res) { + try { + // Obtenir les dimensions originales de l'image + const metadata = await sharp(imagePath).metadata(); + const width = Math.floor(metadata.width / factor); + const height = Math.floor(metadata.height / factor); + + // Redimensionner l'image à la moitié de ses dimensions d'origine + const resizedImage = await sharp(imagePath) + .resize(width, height) + .jpeg({ quality: 65 }) + .toBuffer(); + + res.set('Content-Type', 'image/jpeg'); + } catch (err) { + console.error('Error resizing image:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } +} + router.get('/preview/:projectId/:orderId', async (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; @@ -81,19 +101,8 @@ router.get('/preview/:projectId/:orderId', async (req, res) => { console.error('Image not found:', err); return res.status(404).json({ error: 'Image not found' }); } - - // Obtenir les dimensions originales de l'image - const metadata = await sharp(imagePath).metadata(); - const width = Math.floor(metadata.width / 7); - const height = Math.floor(metadata.height / 7); - - // Redimensionner l'image à la moitié de ses dimensions d'origine - const resizedImage = await sharp(imagePath) - .resize(width, height) - .jpeg({ quality: 65 }) - .toBuffer(); - - res.set('Content-Type', 'image/jpeg'); + const factor = 7; + const resizedImage = await previewImage(imagePath, factor, res); res.send(resizedImage); }); } catch (err) {