> 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

0 znaków
🖼️

Zdekodowany obraz JPEG pojawi się tutaj

[FAITHFUL]

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.

[PRIVATE]

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.

[INSTANT]

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.

// OTHER LANGUAGES