Convertisseur Base64 en PNG

Transformez du texte Base64 en véritable fichier PNG. Collez une chaîne brute ou un URI data:image/png;base64, affichez l’aperçu avec sa transparence, puis enregistrez-le tel quel ou convertissez en PNG des images d’autres formats.

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Collez la chaîne Base64 ou l’URI data:image/png;base64 complet.
  2. Vérifiez l’aperçu. Les zones transparentes apparaissent sur un motif en damier.
  3. Laissez « Télécharger en » sur PNG. Si les données sont au format JPEG, WebP ou autre, elles sont converties en PNG dans votre navigateur.
  4. Téléchargez le fichier .png.

D’où viennent les PNG en Base64

Le PNG est le format que vous rencontrerez le plus souvent en Base64. Un appel à canvas.toDataURL() sans argument renvoie un data URI PNG. Les outils d’automatisation de navigateur renvoient leurs captures d’écran en PNG Base64, par exemple page.screenshot({ encoding: 'base64' }) dans Puppeteer ou get_screenshot_as_base64() dans Selenium. Les moteurs de rendu de graphiques, les générateurs de QR codes et les API de génération d’images renvoient souvent l’image dans un champ Base64 au sein d’un JSON.

Une chaîne PNG se reconnaît facilement : elle commence toujours par iVBORw0KGgo, l’encodage de la signature PNG de 8 octets qui débute par 89 50 4E 47. Vient ensuite AAAANSUhEUg, le début du bloc IHDR qui contient la largeur et la hauteur.

Les chaînes copiées depuis du JSON méritent d’abord une rapide vérification. La fonction json_encode de PHP, par exemple, échappe par défaut les barres obliques : un PNG issu d’une API PHP peut donc arriver avec des séquences \/. Remplacez-les par / et retirez les guillemets qui entourent la chaîne avant de la coller.

Pourquoi enregistrer en PNG

Le PNG compresse sans perdre le moindre détail et stocke un canal alpha complet : les ombres douces et les contours anticrénelés restent intacts. C’est donc le choix naturel pour les captures d’écran, les éléments d’interface, les schémas et tout ce qui contient du texte. Pour les photos, le JPG ou le WebP produisent des fichiers bien plus légers.

Convertir un JPEG ou un WebP en PNG conserve exactement ce qui s’affiche à l’écran, mais ne peut pas restaurer les détails déjà supprimés par la compression avec perte, et le PNG est généralement plus volumineux que la source.

Enregistrer un PNG Base64 dans le code

# Python
import base64
with open('screenshot.png', 'wb') as f:
    f.write(base64.b64decode(b64_string))

// Navigateur : data URI vers Blob, sans décodage manuel
const blob = await (await fetch(dataUri)).blob();
const url = URL.createObjectURL(blob);

Besoin du sens inverse ? PNG en Base64 encode un fichier en chaîne ou en data URI.

Questions fréquentes

Comment savoir si une chaîne Base64 est un PNG ?
Les données PNG commencent toujours par iVBORw0KGgo. L’outil lit aussi directement les octets de signature : il indique donc le format réel même si le data URI annonce autre chose.
La conversion en PNG réduit-elle la qualité ?

Non. Le PNG est sans perte : les pixels sont stockés exactement tels que le navigateur les a décodés. La seule perte possible serait celle déjà présente dans le fichier source.

La transparence est-elle conservée ?

Oui. La sortie PNG conserve l’intégralité du canal alpha. La sortie JPEG remplit les zones transparentes de blanc, et la sortie GIF rend chaque pixel soit entièrement transparent, soit entièrement opaque.

Mon data URI PNG affiche une image cassée. Que se passe-t-il ?
En général, la chaîne a été coupée. Les cellules de tableur (Excel s’arrête à 32 767 caractères), les lignes de journal et les colonnes de base de données tronquent souvent les valeurs longues. Retirez aussi les guillemets qui l’entourent et les échappements JSON comme \/ avant de coller.