Konvertera Base64 till PNG

Gör om Base64-text till en riktig PNG-fil. Klistra in en rå sträng eller en data:image/png;base64-URI, förhandsvisa den med transparensen och spara den som den är, eller konvertera andra bildformat till PNG.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Klistra in Base64-strängen eller hela data:image/png;base64-URI:n.
  2. Kontrollera förhandsvisningen. Transparenta områden visas över ett schackrutigt mönster.
  3. Låt PNG vara valt under Ladda ned som. Om datan är JPEG, WebP eller ett annat format konverteras den till PNG i din webbläsare.
  4. Ladda ned .png-filen.

Var Base64-kodade PNG-bilder kommer ifrån

PNG är det format du oftast stöter på som Base64. Anropar du canvas.toDataURL() utan argument får du en data URI i PNG-format. Verktyg för webbläsarautomatisering returnerar skärmbilder som Base64-kodad PNG, till exempel page.screenshot({ encoding: 'base64' }) i Puppeteer eller get_screenshot_as_base64() i Selenium. Diagramrenderare, QR-kodgeneratorer och API:er för bildgenerering returnerar ofta bilden som ett Base64-fält i JSON.

En PNG-sträng är lätt att känna igen: den börjar alltid med iVBORw0KGgo, kodningen av PNG-filens signatur på 8 byte som inleds med 89 50 4E 47. Därefter följer AAAANSUhEUg, som är början på IHDR-blocket med bredd och höjd.

Strängar som kopieras ur JSON behöver kontrolleras först. PHP:s json_encode sätter till exempel som standard ett omvänt snedstreck framför varje snedstreck, så en PNG från ett PHP-API kan innehålla sekvenser som \/. Ersätt dem med / och ta bort de omgivande citattecknen innan du klistrar in.

Varför spara som PNG

PNG komprimerar utan att förlora några detaljer och lagrar en fullständig alfakanal, så mjuka skuggor och kantutjämnade kanter förblir intakta. Det gör formatet till det naturliga valet för skärmbilder, gränssnittselement, diagram och allt som innehåller text. För foton ger JPG eller WebP betydligt mindre filer.

När du konverterar en JPEG eller WebP till PNG behålls exakt det som syns på skärmen, men detaljer som den förstörande komprimeringen redan har tagit bort kommer inte tillbaka, och PNG-filen blir oftast större än källfilen.

Spara en Base64-kodad PNG med kod

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

// Webbläsare: data URI till Blob, utan manuell avkodning
const blob = await (await fetch(dataUri)).blob();
const url = URL.createObjectURL(blob);

Behöver du gå åt andra hållet? PNG till Base64 kodar en fil till en sträng eller data URI.

Vanliga frågor

Hur ser jag om en Base64-sträng är en PNG?
PNG-data börjar alltid med iVBORw0KGgo. Verktyget läser också signaturbytena direkt, så det rapporterar det verkliga formatet även om data URI:n påstår något annat.
Försämras kvaliteten vid konvertering till PNG?

Nej. PNG är förlustfritt, så pixlarna lagras exakt som webbläsaren avkodade dem. Den enda förlust som kan finnas är en som redan har skett i källfilen.

Behålls transparensen?

Ja. PNG-utdata behåller hela alfakanalen. JPEG-utdata fyller transparenta områden med vitt, och GIF-utdata gör varje pixel antingen helt transparent eller helt ogenomskinlig.

Min PNG-data URI visar en trasig bild. Vad är fel?
Oftast har strängen kapats. Kalkylbladsceller (Excel stannar vid 32 767 tecken), loggrader och databaskolumner kortar ofta av långa värden. Ta också bort omgivande citattecken och JSON-escapesekvenser som \/ innan du klistrar in.