> base64 | decode | JPG <
// Dekoduj ciągi Base64 i identyfikatory data URI z powrotem na zdjęcia JPG / JPEG — zachowane EXIF, natychmiastowy podgląd, pobieranie jednym kliknięciem
Zdekodowany obraz JPEG pojawi się tutaj
Brak ponownej kompresji
Bajty JPEG wychodzące z dekodera są identyczne bit po bicie z tym, co zostało zakodowane — ta sama jakość, te same EXIF, te same współczynniki DCT.
Lokalne dekodowanie
Twój ciąg Base64 jest dekodowany za pomocą atob() całkowicie w przeglądarce. Brak przesyłania. Brak serwera. Brak analizy ładunku.
Podgląd na żywo
Zobacz zdekodowane zdjęcie i jego wymiary natychmiast — pobierz jako .jpg jednym kliknięciem.
// O BASE64 NA JPG
Co akceptuje to narzędzie
- >Data URI: data:image/jpeg;base64,/9j/4AAQSkZ…
- >Surowy ładunek Base64 JPEG (zaczyna się od /9j/)
- >Base64 z osadzonymi białymi znakami / zawijaniem wierszy
- >Standardowy alfabet RFC 4648 (+/, opcjonalne wypełnienie =)
- >Base64 bezpieczny dla adresów URL (-_) — automatycznie normalizowany podczas dekodowania
- >Wieloczęściowe pliki JPEG (znaczniki JFIF, EXIF, Adobe, SPIFF)
Typowe przypadki użycia
- >Odzyskiwanie zdjęcia z odpowiedzi JSON API
- >Wyodrębnianie awatara profilu z kolumny TEXT bazy danych
- >Dekodowanie pola obrazu CMS przechowywanego jako data URI
- >Rekonstrukcja zdjęcia z części MIME wiadomości e-mail
- >Renderowanie migawki z aparatu wysłanej przez WebSocket
- >Debugowanie uszkodzonego tagu <img src="data:image/jpeg;base64,…">
- >Aplikacje typu offline-first, które buforują zdjęcia jako Base64
Jak działa dekodowanie Base64 → JPG
Dekoder usuwa wszelkie prefiksy data URI, normalizuje białe znaki i znaki bezpieczne dla adresów URL, a następnie wywołuje atob(), aby przekonwertować każdą 4-znakową grupę Base64 z powrotem na 3 bajty binarne. Wynik jest opakowywany w obiekt Blob z typem MIME image/jpeg i wyświetlany w podglądzie za pomocą tagu <img>. Ponieważ Base64 jest bijektywną transformacją binarną-na-tekst, wyjściowy plik JPEG jest identyczny bit po bicie z oryginałem — jego skrót SHA-256 jest zgodny i nie traci się żadnej jakości.
Przykładowy data URI JPEG:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=
Wydajność i zgodność
- >Dekodowanie ma złożoność O(n) względem długości ładunku — obsługuje 100 MB+ bez problemu
- >Używa natywnych atob() + Uint8Array — bez bibliotek innych firm
- >Obsługuje bogate w EXIF pliki JPEG od wszystkich głównych producentów aparatów
- >Działa w Chrome, Firefox, Safari, Edge oraz przeglądarkach mobilnych
- >Podgląd z powiększeniem szczypnięciem na urządzeniach mobilnych
- >Pobieranie przez Blob URL — bez podróży w obie strony do serwera
// JAK DEKODOWAĆ BASE64 NA JPG
Krok 1: Wklej
Wklej ciąg Base64 lub pełny data URI do pola wejściowego
Krok 2: Dekoduj
Kliknij [DECODE] — plik JPEG zostanie wyrenderowany natychmiast
Krok 3: Sprawdź
Sprawdź zdjęcie, jego wymiary i rozmiar pliku przed zapisaniem
Krok 4: Pobierz
Kliknij [DOWNLOAD .jpg], aby zapisać na dysku identyczny bit po bicie plik JPEG
// PRZYKŁADY KODU — BASE64 NA JPG
JavaScript (Browser)
// Decode Base64 → JPEG Blob → preview
const b64 = '/9j/4AAQSkZJRgAB...';
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/jpeg' });
document.getElementById('preview').src = URL.createObjectURL(blob);
Zdekoduj surowy ładunek Base64 JPEG, opakuj w Blob i wyrenderuj za pomocą <img>. Identyfikatory data URI można ustawić bezpośrednio na src.
Node.js
const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));
Zdekoduj tekst Base64 do pliku JPEG za pomocą wbudowanego Buffer w Node.
Python
import base64
with open('out.jpg', 'wb') as f:
f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))
Tylko biblioteka standardowa — Base64 → bajty JPEG → plik.
PHP
<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));
Jedna linia z base64_decode() i file_put_contents().
Shell (macOS / Linux)
echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg
POSIX base64 -d odczytuje ciąg ze standardowego wejścia i zapisuje plik JPEG na dysku.
// FAQ — BASE64 NA JPG
P: Czym jest dekodowanie Base64 na JPG?
O: Odwraca ono zakodowany w Base64 plik JPEG z powrotem do jego pierwotnej postaci binarnej. Dekoder odczytuje po 4 znaki ASCII na raz z ciągu Base64, wyszukuje je w alfabecie RFC 4648 i wyprowadza 3 bajty binarne na grupę. Wynikowa tablica bajtów to kompletny, prawidłowy plik JPEG — te same współczynniki DCT, te same tablice Huffmana, te same metadane EXIF, ta sama jakość co przed kodowaniem.
P: Jak mogę sprawdzić, czy ciąg Base64 to naprawdę JPEG?
O: Każdy plik JPEG zaczyna się od dwóch magicznych bajtów FF D8 (Start-Of-Image). Gdy te bajty są kodowane w Base64, pierwsze 4 znaki to zawsze /9j/. Zatem każdy ciąg Base64 zaczynający się od /9j/4AAQ (nagłówek JFIF) lub /9j/2wC (wiele aparatów w smartfonach używających Adobe APP14) to JPEG. Inne formaty mają różne prefiksy: iVBORw0KGgo dla PNG, R0lGOD dla GIF, UklGR dla WebP.
P: Czy mogę zdekodować data URI bezpośrednio?
O: Tak. Jeśli twój ciąg zaczyna się od data:image/jpeg;base64,, dekoder automatycznie usuwa ten prefiks i przetwarza ładunek. Jeśli masz tylko surową część Base64, nasze narzędzie wykrywa magiczny numer JPEG (/9j/) i opakowuje zdekodowane bajty jako image/jpeg do podglądu. Białe znaki, podziały wierszy i tabulatory są usuwane przed dekodowaniem, więc możesz wkleić ładnie sformatowaną wartość JSON bezpośrednio.
P: Czy dekodowanie obniża jakość mojego pliku JPEG?
O: Nie. Dekodowanie Base64 to czysta transformacja binarna — każdy znak Base64 mapuje się deterministycznie na 6 bitów, a 4 znaki dekodują się na 3 bajty. Bajty JPEG, które wychodzą, są identyczne bit po bicie z tym, co zostało zakodowane, więc jakość jest taka, w jakiej zapisano oryginalny plik JPEG. Skrót SHA-256 zdekodowanego pliku będzie zgodny ze skrótem oryginału. Jeśli twoje zdekodowane zdjęcie wygląda gorzej niż oczekiwano, utrata jakości nastąpiła przy pierwszym zapisaniu pliku JPEG, a nie podczas podróży Base64 w obie strony.
P: Zdekodowany JPG jest uszkodzony — co może być nie tak?
O: Typowe przyczyny:
• Obcięty ciąg — Base64 został gdzieś przycięty. Kompletny plik JPEG kończy się na FF D9 (End-Of-Image), co koduje się jako /9k= lub 2Q== w Base64. Jeśli twój ciąg nie kończy się jednym z tych wzorców plus opcjonalnym wypełnieniem, jest niekompletny.
• Podwójnie zakodowany — plik JPEG został zakodowany w Base64 dwukrotnie. Zdekoduj go ponownie.
• Alfabet bezpieczny dla adresów URL — jeśli ciąg używa -_ zamiast +/, niektóre dekodery go odrzucają. Nasze narzędzie normalizuje oba.
• W rzeczywistości inny format — ładunek to PNG lub WebP. Użyj naszego uniwersalnego dekodera Base64 → Obraz, który automatycznie wykrywa format.
P: Czy moje metadane EXIF są zachowywane po dekodowaniu?
O: Tak. Segment EXIF APP1 (model aparatu, GPS, data/godzina, obiektyw, ISO, balans bieli, orientacja itd.) jest częścią strumienia bajtów JPEG. Ponieważ Base64 jest odwracalny bit po bicie, każdy bajt — w tym EXIF — jest przywracany. Jeśli potrzebujesz zdjęć bez EXIF ze względu na prywatność, usuń metadane po dekodowaniu za pomocą narzędzia takiego jak exiftool -all= out.jpg lub ponownego eksportu opartego na canvas w przeglądarce.
P: Czy mogę zdekodować Base64 na JPG w terminalu?
O: Tak. Na macOS i Linux: echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(starszy base64 w macOS używa -D.)
W Windows PowerShell: [IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
Jeśli twoje dane wejściowe to pełny data URI, najpierw przepuść je przez sed 's|^data:.*base64,||', aby usunąć prefiks.
P: Jak duży plik Base64 JPG mogę zdekodować?
O: Do limitu pamięci twojej przeglądarki. Zdekodowany plik JPEG o rozmiarze 100 MB wymaga ~135 MB tekstu Base64, z czym nowoczesne przeglądarki desktopowe radzą sobie bez problemu. Przeglądarki mobilne są niezawodne do ~40 MB. W przypadku ekstremalnie dużych zdjęć (eksporty JPEG skonwertowane z RAW z aparatów średnioformatowych) rozważ dekodowanie po stronie serwera: base64 -d photo.b64 > photo.jpg jest znacznie szybsze niż podróż w obie strony w przeglądarce.
P: Czy dekoder działa offline?
O: Tak, po początkowym załadowaniu strony. Całe dekodowanie korzysta z wbudowanych interfejsów API przeglądarki (atob(), Uint8Array, Blob, URL.createObjectURL()), z których żaden nie wymaga połączenia sieciowego. Możesz to potwierdzić, wyłączając sieć i kontynuując dekodowanie — podgląd i pobieranie nadal działają.
P: Czy plik JPEG w Base64 jest szyfrowany lub prywatny?
O: Nie. Base64 to kodowanie, a nie szyfrowanie. Każdy, kto ma twój ciąg Base64, może w milisekundach zdekodować go z powrotem do oryginalnego zdjęcia, a dane EXIF (w tym współrzędne GPS) są dołączone. Jeśli plik JPEG zawiera wrażliwe informacje, zaszyfruj go (AES-GCM, age, PGP) przed zastosowaniem Base64 i transportuj ciąg wyłącznie przez HTTPS.
P: Czy dekodowanie odbywa się po stronie klienta — czy cokolwiek jest przesyłane?
O: Nic nie jest przesyłane. Każdy krok — usunięcie prefiksu, normalizacja białych znaków, wywołanie atob(), zbudowanie Blob, wyrenderowanie <img>, uruchomienie pobierania — odbywa się w twojej przeglądarce. Otwórz kartę Sieć w narzędziach deweloperskich przeglądarki podczas dekodowania, a zobaczysz zero żądań wychodzących dla twojego ładunku Base64. To narzędzie jest bezpieczne dla poufnych zrzutów ekranu, osobistych zdjęć i danych podlegających regulacjom.
P: Jak zdekodować Base64 na JPG w kodzie produkcyjnym?
O: W Node.js: fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64')). W Python: open('out.jpg','wb').write(base64.b64decode(b64)). W Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.jpg", b, 0644). W Java: Files.write(Path.of("out.jpg"), Base64.getDecoder().decode(b64)). W Rust: std::fs::write("out.jpg", base64::decode(b64)?)?. W Ruby: File.binwrite('out.jpg', Base64.decode64(b64)). W PHP: file_put_contents('out.jpg', base64_decode($b64)).
P: Base64 na JPG vs Base64 na PNG — którego powinienem użyć?
O: Spójrz na prefiks ciągu Base64. Jeśli zaczyna się od /9j/, to JPEG — użyj Base64 → JPG. Jeśli zaczyna się od iVBORw0KGgo, to PNG — użyj Base64 → PNG. Nie możesz zmusić dekodera JPEG do wygenerowania PNG (lub odwrotnie); magiczne bajty mówią prawdę. W razie wątpliwości użyj uniwersalnego dekodera, który automatycznie wykrywa format i zapisuje z właściwym rozszerzeniem.