Ajouter une fonction de prévisualisation d'image pour redimensionner et renvoyer une image JPEG

This commit is contained in:
2025-03-13 12:10:21 +01:00
parent df219bfc06
commit 5ffa1ec839

View File

@@ -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) => { router.get('/preview/:projectId/:orderId', async (req, res) => {
const projectId = req.params.projectId; const projectId = req.params.projectId;
const orderId = req.params.orderId; const orderId = req.params.orderId;
@@ -81,19 +101,8 @@ router.get('/preview/:projectId/:orderId', async (req, res) => {
console.error('Image not found:', err); console.error('Image not found:', err);
return res.status(404).json({ error: 'Image not found' }); return res.status(404).json({ error: 'Image not found' });
} }
const factor = 7;
// Obtenir les dimensions originales de l'image const resizedImage = await previewImage(imagePath, factor, res);
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');
res.send(resizedImage); res.send(resizedImage);
}); });
} catch (err) { } catch (err) {