> base64 | decode | PNG <

// Decodifica stringhe Base64 e data URI di nuovo in immagini PNG — alfa preservato, anteprima istantanea, download con un clic

0 caratteri
🖼️

Il PNG decodificato apparirà qui

[LOSSLESS]

Bit-perfetto

Il PNG decodificato è byte-identico all'originale — alfa, palette e profilo colore sopravvivono intatti al round-trip.

[SECURE]

Decodifica locale

Il payload Base64 viene decodificato nel tuo browser con atob(). Nessun upload sul server, nessun logging dei tuoi byte PNG.

[INSTANT]

Anteprima dal vivo

Visualizza l'immagine decodificata, le sue dimensioni e la dimensione approssimativa del file istantaneamente prima di scaricare.

// INFORMAZIONI SU BASE64 A PNG

Cosa accetta questo strumento

  • >Data URI: data:image/png;base64,iVBORw0KGgo…
  • >Payload PNG Base64 grezzo (inizia con iVBORw0KGgo)
  • >Base64 con spazi bianchi / a capo incorporati
  • >Alfabeto standard RFC 4648 (+/, padding = opzionale)
  • >Base64 URL-safe (-_) — normalizzato automaticamente alla decodifica
  • >Incollaggio Unicode-aware — i BOM vengono rimossi

Casi d'uso comuni

  • >Salvare uno screenshot dal data URI di un ispettore DOM
  • >Estrarre un logo da uno sfondo CSS data-uri
  • >Recuperare un'immagine da una risposta API JSON
  • >Ripristinare un'immagine da una colonna TEXT di un database
  • >Recuperare un PNG da una parte MIME di un'email
  • >Ispezionare un'icona incorporata in un SVG inline
  • >Eseguire il debug di un tag <img src="data:image/png;base64,…"> danneggiato

Come funziona la decodifica Base64 → PNG

Il decoder rimuove qualsiasi prefisso data URI, normalizza gli spazi bianchi e i caratteri URL-safe, poi chiama atob() per convertire ogni gruppo di 4 caratteri di nuovo in 3 byte binari. L'array di byte viene avvolto in un Blob con tipo MIME image/png, riceve un object URL e viene renderizzato in un elemento <img>. Poiché Base64 è biiettivo con il binario, l'output è bit-identico al PNG originale — uno SHA-256 del file decodificato corrisponde all'originale.

Esempio di data URI PNG:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==

Prestazioni e compatibilità

  • >La decodifica è O(n) sulla lunghezza del payload — gestisce 100 MB+ senza problemi
  • >Usa l'atob() nativo del browser — nessuno shim JS pesante
  • >Supporta APNG multi-frame quando il visualizzatore lo supporta
  • >Funziona in tutti i browser moderni (Chrome, Firefox, Safari, Edge)
  • >Anteprima responsive su mobile con pinch-to-zoom
  • >Il download usa un Blob URL — nessun round-trip intermedio al server

// COME DECODIFICARE BASE64 IN PNG

📋

Passo 1: Incolla

Incolla la stringa Base64 o il data URI completo nel campo di input

🔍

Passo 2: Decodifica

Clicca su [DECODE] — il PNG viene renderizzato istantaneamente nell'anteprima

📊

Passo 3: Ispeziona

Controlla dimensioni, dimensione del file e canale alfa prima di salvare

💾

Passo 4: Scarica

Clicca su [DOWNLOAD .png] per salvare su disco un PNG bit-identico

// ESEMPI DI CODICE — DA BASE64 A PNG

JavaScript (Browser)

// Decode Base64 → PNG Blob → download link
const b64 = 'iVBORw0KGgoAAAANSUhEUg...';
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
const blob = new Blob([arr], { type: 'image/png' });
const url = URL.createObjectURL(blob);
window.open(url);

Decodifica un payload Base64 grezzo in un Blob e aprilo. Per un data URI completo, il tag <img> lo accetta direttamente.

Node.js

const fs = require('fs');
const b64 = 'iVBORw0KGgoAAAANSUhEUg...';
fs.writeFileSync('out.png', Buffer.from(b64, 'base64'));

Una riga usando il Buffer integrato di Node per decodificare Base64 e scrivere un file PNG.

Python

import base64
with open('out.png', 'wb') as f:
    f.write(base64.b64decode('iVBORw0KGgoAAAANSUhEUg...'))

Solo libreria standard — decodifica il testo Base64 di nuovo in byte PNG.

PHP

<?php
file_put_contents('out.png', base64_decode('iVBORw0KGgoAAAANSUhEUg...'));

Una riga usando i nativi base64_decode() e file_put_contents().

Shell (macOS / Linux)

echo 'iVBORw0KGgoAAAANSUhEUg...' | base64 -d > out.png

POSIX base64 -d / -D legge il testo da stdin e scrive il PNG decodificato su stdout.

// FAQ — DA BASE64 A PNG

D: Cos'è la decodifica da Base64 a PNG?

R: Inverte un PNG codificato in Base64 riportandolo alla sua forma binaria originale. La stringa che incolli è composta da 4 caratteri ASCII per 3 byte binari; il decoder legge 4 caratteri alla volta, applica la ricerca nell'alfabeto RFC 4648 e scrive 3 byte per gruppo finché la stringa non è esaurita. L'array di byte risultante è un file PNG completo e valido che puoi visualizzare in anteprima, salvare o inviare ovunque sia accettato un normale PNG.

D: Come faccio a sapere che la stringa Base64 è davvero un PNG?

R: I primi 8 byte di ogni PNG sono la firma magica 89 50 4E 47 0D 0A 1A 0A. Codificati in Base64, questi 8 byte iniziano sempre con iVBORw0KGgo. Quindi qualsiasi stringa Base64 che inizia con iVBORw0KGgo è un PNG. Altri formati hanno prefissi diversi: /9j/ è JPEG, R0lGOD è GIF, UklGR è WebP. Il nostro decoder rileva automaticamente i PNG da questo prefisso magico e ricorre al tipo MIME nel data URI se presente.

D: Posso incollare un data URI o solo Base64 grezzo?

R: Entrambi. Se la tua stringa inizia con data:image/png;base64,, il decoder rimuove automaticamente il prefisso. Se incolli solo la parte del payload, deduciamo il tipo MIME PNG dai byte magici. Spazi bianchi, a capo, ritorni a capo e tabulazioni vengono normalizzati prima della decodifica, così puoi incollare una risposta JSON formattata in modo leggibile senza rompere nulla.

D: Il PNG decodificato è danneggiato — perché?

R: Cause comuni:
Stringa troncata — il Base64 è stato tagliato da qualche parte (ad es. da un limite di riga nella tua fonte di copia). Un Base64 PNG completo termina con RU5ErkJggg== (il chunk IEND); se manca, il file è incompleto.
Alfabeto URL-safe — se la stringa usa -_ invece di +/ (base64url), il nostro strumento lo normalizza; altri decoder potrebbero rifiutarlo.
Doppia codifica — il PNG è stato codificato in Base64 due volte. Decodificalo di nuovo.
Non è un PNG — il payload è in realtà JPEG o WebP. Usa il nostro decoder generico da Base64 a immagine che rileva automaticamente qualsiasi formato.

D: La decodifica di nuovo in PNG perde qualità o trasparenza?

R: No. Base64 è una trasformazione reversibile bit per bit. Il PNG decodificato è byte-identico all'originale: canale alfa, palette (PLTE), trasparenza (tRNS), profilo colore (iCCP/sRGB), gamma (gAMA) e dimensioni fisiche dei pixel (pHYs) sopravvivono tutti. Un hash SHA-256 del file decodificato corrisponde all'hash dell'originale. Se noti qualche differenza, la modifica è avvenuta prima della codifica, non durante il round-trip Base64.

D: Posso decodificare Base64 in PNG usando il terminale?

R: Sì. Su macOS e Linux:
echo 'iVBORw0KGgo…' | base64 -d > out.png
(macOS usa -D nelle versioni più vecchie.)
Su Windows PowerShell:
[IO.File]::WriteAllBytes('out.png', [Convert]::FromBase64String('iVBORw0KGgo…'))
Se la stringa è un data URI completo, rimuovi prima il prefisso data:image/png;base64, (la maggior parte delle shell accetta sed 's|^data:.*base64,||').

D: Quanto può essere grande l'input PNG Base64?

R: Decodifichiamo nel browser, quindi il limite è la memoria del tuo dispositivo — comodamente 100 MB+ su desktop. Un PNG decodificato da 100 MB richiederebbe ~135 MB di testo Base64, che la maggior parte dei browser incolla senza problemi. Se lavori con PNG scientifici o medici molto grandi, considera invece la decodifica lato server, perché le prestazioni di atob() nel browser degradano vicino al limite di memoria.

D: Questo decoder funziona offline?

R: Sì. Tutta la decodifica usa le API native atob() + Uint8Array + Blob, integrate in ogni browser moderno. Dopo che la pagina si è caricata una volta, puoi disconnetterti dalla rete e continuare a decodificare. Nessun servizio esterno, nessun round-trip al server, nessuna analitica sul tuo payload immagine.

D: Qual è la differenza tra un PNG Base64 e un normale file PNG?

R: Contengono esattamente gli stessi byte. Un normale file .png è il binario grezzo; una stringa PNG Base64 è quello stesso binario riscritto nell'alfabeto ASCII a 64 caratteri. La forma Base64 è più grande del 33% ma sicura da inserire in attributi HTML, stringhe JSON, url() CSS ed email. Non puoi inserire byte PNG grezzi in HTML — contengono byte null e caratteri high-bit che rompono i parser di testo. Base64 è la soluzione alternativa.

D: Un PNG Base64 si carica più velocemente di un file .png separato?

R: Solo per immagini minuscole. Base64 risparmia un round-trip HTTP, che può essere di 50–100 ms su una connessione nuova — utile per icone UI critiche sotto i 4 KB. Per qualsiasi cosa più grande, un file .png separato servito con header di cache a lunga durata vince quasi sempre perché (a) gzip comprime male il testo Base64, (b) i data URI non possono essere memorizzati nella cache in modo indipendente e (c) bloccano il parsing dell'HTML. Usa Base64 per micro-asset above-the-fold, non per immagini hero.

D: Posso decodificare Base64 in PNG senza caricare i dati da nessuna parte?

R: Sì — questo strumento funziona al 100% lato client. La tua stringa Base64 viene decodificata in JavaScript sul tuo dispositivo, avvolta in un Blob localmente e visualizzata tramite URL.createObjectURL(). Niente viene caricato. Puoi verificarlo aprendo la scheda Rete dei dev-tools del browser mentre decodifichi — non viene inviata alcuna richiesta. Eseguire l'intero flusso offline (modalità aereo) funziona anche dopo il caricamento iniziale della pagina.

D: Come decodifico Base64 in PNG nel codice di produzione?

R: In Node.js: fs.writeFileSync('out.png', Buffer.from(b64, 'base64')). In Python: open('out.png','wb').write(base64.b64decode(b64)). In Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.png", b, 0644). In Java: Files.write(Path.of("out.png"), Base64.getDecoder().decode(b64)). In Rust: std::fs::write("out.png", base64::decode(b64)?)?. In PHP: file_put_contents('out.png', base64_decode($b64)). La libreria standard di ogni runtime include un decoder Base64 — raramente serve una dipendenza di terze parti.

D: Base64 a PNG vs Base64 a JPG — quale decoder dovrei usare?

R: Usa Base64 → PNG quando la stringa Base64 inizia con iVBORw0KGgo (o il data URI dice data:image/png;base64,). Usa Base64 → JPG quando la stringa inizia con /9j/4AAQ o /9j/2wC. Se non sei sicuro, usa il nostro decoder generico da Base64 a immagine che ispeziona i byte magici e sceglie automaticamente il formato giusto. Non forzare mai un formato che non corrisponde al payload — il file decodificato sarà costituito da byte validi ma illeggibili.

// OTHER LANGUAGES