🔐
← Retour aux guides

Comment convertir des images en URL de données Base64

· Tags: image-to-base64, base64, data-url, image-embedding, web-performance, html, css

Qu'est-ce qu'une URL de données d'image Base64 ?

Une URL de donnĂ©es d'image Base64 intĂšgre le fichier image entier directement dans un document web sous forme de chaĂźne de texte, Ă©liminant la nĂ©cessitĂ© d'une requĂȘte HTTP distincte pour charger l'image. Au lieu que le navigateur rĂ©cupĂšre un fichier externe, les donnĂ©es de l'image sont dĂ©jĂ  prĂ©sentes dans le HTML ou le CSS.

Le format ressemble Ă  ceci :

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==

Décomposition du format :

  • data: — le prĂ©fixe du schĂ©ma d'URI de donnĂ©es
  • image/png — le type MIME de l'image intĂ©grĂ©e
  • ;base64 — indique l'encodage Base64
  • ,iVBORw0... — les donnĂ©es d'image rĂ©elles encodĂ©es en Base64

Pourquoi convertir des images en Base64 ?

L'intégration d'images sous forme de Base64 est utile dans plusieurs scénarios :

RĂ©duire les requĂȘtes HTTP

Chaque fichier image externe nĂ©cessite une requĂȘte HTTP distincte. Les URL de donnĂ©es Base64 Ă©liminent ces requĂȘtes, ce qui peut amĂ©liorer le temps de chargement des pages — en particulier sur les connexions Ă  forte latence ou pour les pages comportant de nombreux petits Ă©lĂ©ments.

Documents autonomes

Les images Base64 rendent vos fichiers HTML entiĂšrement portables. Un modĂšle d'e-mail avec des images Base64 fonctionne mĂȘme lorsque le client de messagerie du destinataire bloque les ressources externes. De mĂȘme, un document HTML avec des images intĂ©grĂ©es peut ĂȘtre partagĂ© comme un fichier unique sans craindre les chemins d'images cassĂ©s.

Pages critiques pour les performances

Pour les images hero au-dessus de la ligne de flottaison et les Ă©lĂ©ments UI critiques, Ă©liminer le aller-retour supplĂ©mentaire peut amĂ©liorer des mĂ©triques comme le Largest Contentful Paint (LCP). Cependant, cela ne profite qu'aux petites images — pour les grandes images, l'intĂ©gration est contre-productive.

Fonctionne hors ligne

Lorsqu'une image est intégrée sous forme d'URL de données, elle fonctionne sans accÚs au réseau. C'est précieux pour les applications web hors ligne et les applications web progressives (PWA).

Comment convertir une image en Base64

Méthode 1 : Utiliser un outil en ligne (le plus simple)

Le moyen le plus rapide de convertir une image en Base64 est d'utiliser un outil en ligne dĂ©diĂ©. TĂ©lĂ©versez ou glissez-dĂ©posez votre image dans notre encodeur Base64 gratuit en ligne, et vous obtiendrez l'URL de donnĂ©es complĂšte prĂȘte Ă  coller dans votre code.

Méthode 2 : Utiliser JavaScript dans le navigateur

L'API FileReader offre un moyen simple de convertir des images sélectionnées par l'utilisateur en Base64 :

function imageToBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result);
    reader.onerror = () => reject(new Error('Failed to read file'));
    reader.readAsDataURL(file);
  });
}

// Usage with a file input
document.getElementById('imageInput').addEventListener('change', async (event) => {
  const file = event.target.files[0];
  if (!file) return;

  const dataUrl = await imageToBase64(file);
  console.log(dataUrl);
  // Output: data:image/jpeg;base64,/9j/4AAQ...
});

Méthode 3 : Utiliser l'API Canvas

Si vous devez redimensionner, recadrer ou compresser une image avant de la convertir en Base64, l'API Canvas est la solution :

function canvasToBase64(canvas, format = 'image/webp', quality = 0.8) {
  return canvas.toDataURL(format, quality);
}

// Example: Resize an image before converting
async function resizeImageToBase64(file, maxWidth = 800) {
  const bitmap = await createImageBitmap(file);
  const canvas = document.createElement('canvas');
  const ratio = Math.min(maxWidth / bitmap.width, 1);
  canvas.width = bitmap.width * ratio;
  canvas.height = bitmap.height * ratio;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);
  return canvas.toBase64('image/jpeg', 0.85);
}

Méthode 4 : Utiliser Node.js

CÎté serveur, utilisez le module fs avec Buffer pour convertir des fichiers image en Base64 :

const fs = require('fs');
const path = require('path');

function encodeImageToBase64(filePath) {
  const buffer = fs.readFileSync(filePath);
  const base64 = buffer.toString('base64');

  // Detect MIME type from extension
  const ext = path.extname(filePath).toLowerCase();
  const mimeTypes = {
    '.png': 'image/png',
    '.jpg': 'image/jpeg',
    '.jpeg': 'image/jpeg',
    '.gif': 'image/gif',
    '.webp': 'image/webp',
    '.svg': 'image/svg+xml',
    '.ico': 'image/x-icon',
  };
  const mimeType = mimeTypes[ext] || 'image/png';

  return `data:${mimeType};base64,${base64}`;
}

const dataUrl = encodeImageToBase64('logo.png');
console.log(dataUrl);

Méthode 5 : Utiliser la ligne de commande

Sur Linux et macOS, vous pouvez utiliser la commande base64 intégrée :

# Encode to Base64 and wrap as a data URL
echo "data:image/png;base64,$(base64 -w 0 image.png)"

Comment utiliser les images Base64 dans le HTML

Directement dans une balise <img> :

<img
  src="data:image/webp;base64,UklGRpYCAABXRUJQVlA4WAoAAAA..."
  alt="Inline Logo"
  width="200"
  height="100"
/>

Comment utiliser les images Base64 dans le CSS

Comme image d'arriĂšre-plan :

.icon-warning {
  background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PGxpbmUgeDE9IjEyIiB5MT0iMTYiIHgyPSIxMiIgeTI9IjEyIi8+PGxpbmUgeDE9IjEyIiB5MT0iOCIgeDI9IjEyLjAxIiB5Mj0iOCIvPjwvc3ZnPg==');
  width: 24px;
  height: 24px;
}

Considérations sur les performances et bonnes pratiques

Quand les images Base64 aident

  • Petites icĂŽnes et Ă©lĂ©ments UI de moins de 10 Ko
  • Images critiques au-dessus de la ligne de flottaison qui bloquent le rendu
  • Sprites et icĂŽnes SVG utilisĂ©s sur une page
  • ModĂšles d'e-mails oĂč les images externes sont souvent bloquĂ©es
  • Applications web hors ligne d'abord et documents autonomes

Quand les images Base64 nuisent

  • Grandes photos ou images haute rĂ©solution (100 Ko+) — le surcoĂ»t Base64 et le dĂ©lai d'analyse nuisent aux performances
  • Images qui changent frĂ©quemment — invalider le cache navigateur pour une charge utile HTML volumineuse est inutile
  • Images partagĂ©es sur de nombreuses pages — les fichiers externes bĂ©nĂ©ficient du cache navigateur partagĂ©
  • Images servies par CDN — les CDN optimisent la livraison des fichiers mieux que les donnĂ©es intĂ©grĂ©es

La rĂšgle empirique des 10 Ko

Une directive largement citĂ©e : si une image fait moins de 10 Ko, envisagez de l'intĂ©grer sous forme de Base64. Si elle est plus grande, servez-la comme fichier sĂ©parĂ©. Cela Ă©quilibre le surcoĂ»t des requĂȘtes HTTP contre le surcoĂ»t des donnĂ©es encodĂ©es en Base64 dans votre HTML.

Cependant, le seuil optimal dépend de votre situation spécifique :

  • Le multiplexage HTTP/2 rĂ©duit la pĂ©nalitĂ© des requĂȘtes multiples, rendant les fichiers externes plus attrayants
  • Sur les connexions lentes, Ă©liminer les requĂȘtes peut ĂȘtre prĂ©cieux mĂȘme pour des images plus grandes
  • Pour les ressources du chemin de rendu critique, intĂ©grez mĂȘme les images plus grandes si cela Ă©vite un aller-retour de plus

Considération sur la compression

Si vous convertissez des images JPEG ou PNG en Base64, envisagez d'utiliser WebP Ă  la place. WebP offre une compression supĂ©rieure au mĂȘme niveau de qualitĂ©, ce qui donne des chaĂźnes Base64 plus courtes. De nombreux outils en ligne vous permettent de rĂ©-encoder les images avant de les convertir en Base64.

Convertissez vos images en Base64

PrĂȘt Ă  intĂ©grer des images directement dans votre code ? Utilisez notre encodeur et dĂ©codeur Base64 gratuit en ligne pour tĂ©lĂ©verser des images et obtenir des URL de donnĂ©es complĂštes pour le HTML, le CSS et le JavaScript — aucune installation requise.

Comment convertir des images en URL de données Base64 - CoolTool