Mode d’emploi
- Déposez un fichier .jpg ou .jpeg sur la zone de dépôt, cliquez pour en choisir un ou collez une image.
- Pour garder le fichier exactement tel quel, laissez « Conserver l’original » dans « Convertir en ». Pour le réduire, choisissez JPEG ou WebP et baissez la « Qualité ».
- Définissez une « Largeur max. » si la photo est plus grande que sa taille d’affichage.
- Copiez la sortie dont vous avez besoin, par exemple la balise img pour une page ou le Base64 brut pour une API, ou téléchargez-la dans un fichier.
Le JPEG en bref
JPEG est le format standard des photographies. Il utilise une compression avec perte, qui élimine les détails que l’œil remarque à peine, et ne gère pas la transparence. Les fichiers portent l’extension .jpg, .jpeg ou parfois .jfif, mais le type MIME est toujours image/jpeg ; image/jpg n’est pas un type enregistré, même si de nombreux navigateurs le tolèrent. Un data URI JPEG commence par data:image/jpeg;base64,/9j/, le marqueur de début d’image encodé.
Réduire une photo avant l’encodage
C’est avec les photos que Base64 pèse le plus : un JPEG de 200 Ko devient environ 270 Ko de texte. Deux réglages font la plus grande différence :
- Largeur max. Diviser la largeur par deux réduit le nombre de pixels au quart. Une photo de téléphone de 4000 pixels de large est rarement nécessaire à cette taille.
- Qualité. Des valeurs d’environ 70 à 80 % paraissent généralement identiques à l’original à l’écran et sont bien plus légères. Des valeurs très basses font apparaître des artefacts en blocs.
Une conversion en WebP à qualité comparable donne souvent un résultat encore plus petit. Surveillez la taille encodée affichée pour chaque réglage et gardez le plus petit résultat dont l’aspect reste satisfaisant.
Métadonnées EXIF
Les photos prises avec un appareil photo ou un téléphone contiennent des métadonnées EXIF : modèle de l’appareil, date et heure, et parfois coordonnées GPS. Sans conversion, la sortie Base64 contient les octets d’origine, métadonnées comprises, et toute personne qui la décode peut les lire. C’est ce qu’il faut lorsque le fichier exact compte, par exemple quand une API vérifie une empreinte ou lit la date de prise de vue.
La conversion réencode les pixels dans le navigateur, et les données EXIF ne sont pas reprises. La sortie est plus petite et ne révèle plus où la photo a été prise.
Quand un data URI JPEG en vaut la peine
Il convient bien aux minuscules aperçus flous (une image de 20 à 40 pixels de large, intégrée pendant le chargement différé de la photo complète), aux miniatures dans des réponses JSON et aux exports HTML en un seul fichier. Les grandes images d’en-tête et les galeries doivent rester des fichiers séparés, que le navigateur peut mettre en cache.
# Python
import base64
with open('photo.jpg', 'rb') as f:
uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')
Questions fréquentes
JPG et JPEG, est-ce la même chose ?
Oui. L’extension plus courte .jpg date des systèmes qui n’autorisaient que trois caractères. Il s’agit du même format, avec le type MIME image/jpeg.
L’encodage Base64 réduit-il la qualité du JPEG ?
Non. Base64 représente les octets du fichier sans aucune perte. La qualité ne change que si vous choisissez une conversion, qui réencode l’image avec la qualité définie.
Un data URI JPEG peut-il avoir un fond transparent ?
La chaîne Base64 contient-elle l’emplacement de ma photo ?
C’est possible. Si le JPEG d’origine contient des données GPS dans ses métadonnées EXIF et que vous l’encodez sans modification, la position figure dans la chaîne. La conversion de l’image supprime les métadonnées EXIF.