Skip to Content
🎉 Utilisez JS efficacement →

đŸ“· Gestion des images avec next/image dans Next.js 13+

Next.js propose un composant optimisĂ© pour l’affichage des images : next/image. Il amĂ©liore les performances en :

✅ Optimisant automatiquement les images (compression, WebP/AVIF).
✅ Lazy-loading natif (chargement diffĂ©rĂ© pour amĂ©liorer le temps de rendu).
✅ Redimensionnement dynamique selon la taille de l’écran.


1ïžâƒŁ Afficher une image avec next/image

Le composant next/image remplace la balise <img> standard.

🛠 Exemple :

import Image from "next/image"; export default function Home() { return ( <div> <h1>Bienvenue</h1> <Image src="/images/photo.jpg" alt="Photo optimisée" width={500} height={300} priority /> </div> ); }

✅ Explication :

  • src="/images/photo.jpg" : Chemin de l’image dans le dossier public/.
  • width & height : Dimensions optimisĂ©es par Next.js.
  • priority : Charge l’image immĂ©diatement (utile pour les images critiques).

2ïžâƒŁ Utiliser des images distantes

Par dĂ©faut, Next.js bloque les images provenant d’autres domaines. Il faut les autoriser dans next.config.js.

next.config.js
module.exports = { images: { domains: ["cdn.example.com"], // Autorise les images de ce domaine }, };

🛠 Utilisation d’une image distante

<Image src="https://cdn.example.com/image.jpg" alt="Image distante" width={800} height={600} />

✅ Avantage : Next.js optimise aussi les images distantes via son systùme de proxy.


3ïžâƒŁ Gestion des images responsives (fill)

Next.js permet d’adapter automatiquement les images à la taille du conteneur.

🛠 Exemple avec fill et un conteneur en relative

<div className="relative w-64 h-64"> <Image src="/images/photo.jpg" alt="Image responsive" fill className="object-cover" /> </div>

✅ Explication :

  • fill : L’image remplit son parent (w-64 h-64).
  • object-cover (avec Tailwind) : Garde le ratio de l’image sans dĂ©formation.

4ïžâƒŁ Formats d’images optimisĂ©s

Next.js convertit automatiquement les images en WebP ou AVIF (formats plus légers).

đŸ”č Si le navigateur supporte WebP → Next.js sert WebP.
đŸ”č Sinon, il garde le format d’origine.

Aucune configuration n’est nĂ©cessaire ! 🎉


5ïžâƒŁ Charger dynamiquement une image (loader)

Pour des cas spĂ©cifiques (CDN externe, transformations d’image
), on peut utiliser un loader personnalisĂ©.

🛠 Exemple avec Cloudinary

const cloudinaryLoader = ({ src, width, quality }) => { return `https://res.cloudinary.com/demo/image/upload/w_${width},q_${quality || 75}/${src}`; }; <Image loader={cloudinaryLoader} src="sample.jpg" alt="Image optimisée Cloudinary" width={800} height={600} />

✅ Explication :

  • Transforme dynamiquement les images via Cloudinary (compression, redimensionnement).
  • q_${quality || 75} ajuste la qualitĂ© de l’image.

🎯 Conclusion

🚀 Avec next/image, on obtient :
✅ Des images compressĂ©es et optimisĂ©es automatiquement.
✅ Un lazy loading natif pour de meilleures performances.
✅ Une gestion facile des images locales et distantes.

mis Ă  jour le