Konwerter Base64 na PNG

Zamień tekst Base64 w prawdziwy plik PNG. Wklej czysty ciąg lub URI data:image/png;base64, obejrzyj podgląd wraz z przezroczystością i zapisz plik bez zmian albo przekonwertuj na PNG obraz w innym formacie.

Działa w całości w przeglądarce. Nic nie jest wysyłane.

Jak używać

  1. Wklej ciąg Base64 lub pełny URI data:image/png;base64.
  2. Sprawdź podgląd. Przezroczyste obszary są wyświetlane na tle szachownicy.
  3. W polu „Pobierz jako” pozostaw PNG. Jeśli dane są w formacie JPEG, WebP lub innym, zostaną przekonwertowane na PNG w przeglądarce.
  4. Pobierz plik .png.

Skąd się biorą obrazy PNG w Base64

PNG to format, który najczęściej występuje w postaci Base64. Wywołanie canvas.toDataURL() bez argumentów zwraca data URI z obrazem PNG. Narzędzia do automatyzacji przeglądarki zwracają zrzuty ekranu jako PNG w Base64, na przykład page.screenshot({ encoding: 'base64' }) w Puppeteerze lub get_screenshot_as_base64() w Selenium. Mechanizmy renderujące wykresy, generatory kodów QR i interfejsy API do generowania obrazów często zwracają grafikę jako pole Base64 w JSON.

Ciąg PNG łatwo rozpoznać: zawsze zaczyna się od iVBORw0KGgo, czyli zakodowanej 8-bajtowej sygnatury PNG, która rozpoczyna się od 89 50 4E 47. Dalej następuje AAAANSUhEUg, czyli początek fragmentu IHDR przechowującego szerokość i wysokość.

Ciągi skopiowane z JSON warto najpierw szybko sprawdzić. Na przykład funkcja json_encode w PHP domyślnie poprzedza ukośniki znakiem ucieczki, więc obraz PNG z API napisanego w PHP może zawierać sekwencje \/. Przed wklejeniem zastąp je znakiem / i usuń otaczające cudzysłowy.

Dlaczego warto zapisać obraz jako PNG

PNG kompresuje dane bez utraty jakichkolwiek szczegółów i przechowuje pełny kanał alfa, więc miękkie cienie i wygładzone krawędzie pozostają nienaruszone. Dlatego jest naturalnym wyborem dla zrzutów ekranu, elementów interfejsu, diagramów i wszystkiego, co zawiera tekst. W przypadku zdjęć JPG lub WebP dają znacznie mniejsze pliki.

Konwersja JPEG lub WebP na PNG zachowuje dokładnie to, co widać na ekranie, ale nie przywróci szczegółów usuniętych już przez kompresję stratną, a plik PNG jest zwykle większy niż plik źródłowy.

Zapis obrazu PNG z Base64 w kodzie

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

// Przeglądarka: data URI na Blob, bez ręcznego dekodowania
const blob = await (await fetch(dataUri)).blob();
const url = URL.createObjectURL(blob);

Potrzebny jest odwrotny kierunek? Narzędzie PNG na Base64 koduje plik do ciągu lub data URI.

Najczęściej zadawane pytania

Jak sprawdzić, czy ciąg Base64 to PNG?
Dane PNG zawsze zaczynają się od iVBORw0KGgo. Narzędzie odczytuje też bezpośrednio bajty sygnatury, więc podaje rzeczywisty format nawet wtedy, gdy data URI wskazuje coś innego.
Czy konwersja na PNG obniża jakość?

Nie. PNG jest formatem bezstratnym, więc piksele są zapisywane dokładnie tak, jak zdekodowała je przeglądarka. Jedyna możliwa utrata jakości to ta, która nastąpiła już wcześniej w pliku źródłowym.

Czy przezroczystość zostaje zachowana?

Tak. Wynik w formacie PNG zachowuje pełny kanał alfa. Przy zapisie do JPEG przezroczyste obszary są wypełniane bielą, a przy zapisie do GIF każdy piksel staje się albo całkowicie przezroczysty, albo całkowicie nieprzezroczysty.

Data URI z obrazem PNG pokazuje uszkodzony obraz. Co jest nie tak?
Zwykle ciąg został obcięty. Komórki arkuszy kalkulacyjnych (Excel kończy na 32 767 znakach), wiersze dzienników i kolumny baz danych często skracają długie wartości. Przed wklejeniem usuń też otaczające cudzysłowy i sekwencje ucieczki JSON, takie jak \/.