Charger un fichier
  1. base64hub
  2. Outils images
  3. Base64 en PNG

Base64 en PNG

Collez du Base64 PNG, avec ou sans le préfixe data:image/png;base64,, et enregistrez-le dans un fichier .png. Les exports de canvas, les captures d’écran de tests et les réponses d’API fonctionnent tous.

Gratuit sans inscription, sans limites Local rien n'est envoyé Vérification prévient si ce n'est pas vraiment un PNG Mis à jour 27 oct. 2026
Entrée –Sortie –Taille –

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment convertir du Base64 en PNG

  1. Collez le Base64 ou l’URI complète data:image/png;base64,... dans la zone. Vous pouvez aussi ouvrir ou déposer un fichier .txt contenant la chaîne.
  2. Vérifiez la ligne d’état : elle doit indiquer Base64 valide et Détecté PNG. L’aperçu montre l’image et ses dimensions en pixels.
  3. Modifiez le Nom du fichier si besoin. L’Extension est déjà png.
  4. Appuyez sur Télécharger le fichier.

Si les données s’avèrent être dans un autre format, une note apparaît au-dessus de l’aperçu, par exemple « Cela ressemble à JPEG, pas à un fichier PNG », avec un bouton Télécharger en .jpg. Renommer ne convertit rien : enregistrer sous la vraie extension est donc en général le meilleur choix.

D’où vient le Base64 PNG

Le PNG est la sortie par défaut de nombreux outils qui vous remettent des images sous forme de texte :

  • canvas.toDataURL() renvoie dans les navigateurs une data URI PNG, sauf si vous demandez un autre type. Les pavés de signature, les applications de dessin et les bibliothèques de graphiques qui exportent des images s’appuient dessus.
  • L’automatisation de navigateur : get_screenshot_as_base64() de Selenium et page.screenshot({ encoding: "base64" }) de Puppeteer renvoient des captures d’écran PNG en Base64 brut, sans préfixe. Les rapports de tests les intègrent souvent dans du JSON ou du HTML.
  • Les API de QR codes, de codes-barres, de captchas, de cartes et de génération d’images renvoient couramment des PNG dans un champ JSON.
  • Le HTML et le CSS avec des icônes intégrées, et les exports en un seul fichier de rapports et de notebooks.

Tous se collent directement. Les sauts de ligne, un = manquant à la fin et les caractères URL-safe sont tolérés ; la ligne d’état signale quand un remplissage a été ajouté.

Lire l’en-tête PNG

Un PNG commence par une signature de 8 octets suivie du chunk IHDR, qui contient les propriétés de base de l’image. Appuyez sur Afficher le dump hex pour les voir. Pour une image de 120×40 avec transparence, les deux premières lignes sont :

00000000  89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.PNG........IHDR|
00000010  00 00 00 78 00 00 00 28  08 06 00 00 00 35 ea 3e  |...x...(.....5.>|
OffsetOctetsSignification
0x0089 50 4e 47 0d 0a 1a 0asignature PNG, iVBORw0KGgo en Base64
0x1000 00 00 78largeur : 0x78 = 120 px
0x1400 00 00 28hauteur : 0x28 = 40 px
0x1808profondeur : 8 bits par canal
0x1906type de couleur : 6 = RGBA

Le type de couleur vous indique de quel genre de PNG il s’agit : 00 niveaux de gris, 02 RGB, 03 palette (indexé), 04 niveaux de gris avec alpha, 06 RGB avec alpha. Un PNG à palette issu d’un optimiseur est souvent bien plus petit qu’un PNG RGBA, ce qui est bon à savoir quand le Base64 doit être court.

Si les dimensions semblent absurdes, comme une largeur de plusieurs millions de pixels, les octets qui suivent la signature sont endommagés et l’aperçu échouera.

Vérifier un PNG dans le code

Les mêmes champs d’en-tête se lisent en quelques lignes de Python, sans bibliothèque d’images. Le découpage sur la virgule permet de traiter aussi bien du Base64 brut que des data URI :

import base64, struct

def png_info(b64: str) -> dict:
    data = base64.b64decode(b64.split(",", 1)[-1])
    if data[:8] != b"\x89PNG\r\n\x1a\n":
        raise ValueError("not a PNG")
    width, height, depth, color_type = struct.unpack(">IIBB", data[16:26])
    return {"width": width, "height": height, "bit_depth": depth, "color_type": color_type}

Pour écrire le fichier en Node.js, fs.writeFileSync("shot.png", Buffer.from(b64, "base64")) suffit. Le décodeur Base64 de Node ignore les sauts de ligne et accepte aussi les caractères URL-safe. Plus de détails dans Base64 en Python et Base64 en Node.js.

Quand le PNG refuse de se décoder ou de s’afficher

  • Erreur « Caractère non valide ». La chaîne contient autre chose que du Base64 : un échappement JSON comme \/, une entité HTML ou le reste d’une ligne de log. L’erreur indique la position, et Réparer du Base64 nettoie les suspects habituels.
  • L’image est partiellement dessinée ou absente. La chaîne a été tronquée. Un PNG complet se termine par un chunk IEND ; comparez la Taille avec celle du fichier d’origine si vous la connaissez.
  • « Cela ne ressemble pas à un fichier PNG ». Les octets ne commencent pas du tout par la signature PNG. C’est typique de données chiffrées, d’un autre encodage comme le hex, ou d’un Base64 encodé deux fois, auquel cas Décoder à nouveau apparaît.
  • L’aperçu fonctionne, mais un autre programme refuse le fichier. Comparez le SHA-256 affiché ici avec l’empreinte du fichier reçu par le programme. S’ils concordent, le fichier décodé est correct et c’est le programme qui est en cause.

Pour aller dans l’autre sens et encoder un PNG, utilisez PNG en Base64.

FAQ

Comment enregistrer le résultat de canvas.toDataURL() dans un fichier PNG ?

Copiez toute la chaîne renvoyée par canvas.toDataURL(), collez-la ci-dessus et appuyez sur Télécharger le fichier. Le préfixe est géré pour vous, et le fichier est enregistré en .png, car c’est le format par défaut de toDataURL().

Mon Base64 ne commence pas par iVBORw0KGgo. Est-ce quand même un PNG ?

Non. Tout PNG commence par ces caractères, quelle que soit sa taille. Si la page signale JPEG, WebP ou un autre format, les données n’ont jamais été un PNG, et les enregistrer en .png ne change que le nom. Utilisez Télécharger en pour garder le vrai type.

Comment savoir si le PNG a un fond transparent ?

Ouvrez Afficher le dump hex et lisez l’octet à l’offset 0x19, le type de couleur. 06 (RGBA) et 04 (gris avec alpha) ont un canal alpha. Les types 02, 03 et 00 peuvent quand même avoir de la transparence grâce à un chunk tRNS.

Un PNG animé garde-t-il son animation ?

Oui. Un APNG est un PNG avec des chunks d’images supplémentaires, et le décodage conserve chaque octet. L’aperçu le joue dans les navigateurs qui prennent en charge l’APNG, ce qui est le cas de tous les navigateurs actuels.