Obraz JPEG (.jpg)

ISO/IEC Standard

JPEG to najczęściej stosowany standard kompresji stratnej w fotografii cyfrowej i obrazach internetowych. Wykorzystuje większą wrażliwość ludzkiego oka na luminancję niż na chrominancję.

Konwertuj PNG na JPG

Darmowy konwerter z PNG na JPG w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.

Kompresuj JPG online

Prywatnie - pliki nigdy nie opuszczają Twojego urządzenia

Inspekcja i metadane

Systemy operacyjne i analizatory plików identyfikują pliki JPG, sprawdzając początkową sekwencję bajtów binarnych:

Wybierz lub upuść pliki tutaj

Prywatnie - pliki nigdy nie opuszczają Twojego urządzenia

lub wklej Ctrl+V
Gwarancja prywatności bez przesyłania danych do sieci: 0 bajtów przesłanych na zewnętrzne serwery. Całe przetwarzanie odbyło się lokalnie w piaskownicy przeglądarki.

Podpis nagłówka na poziomie bajtów (Magic Bytes)

Systemy operacyjne i analizatory plików identyfikują pliki JPG, sprawdzając początkową sekwencję bajtów binarnych:

PODPIS HEX (OFFSET 0):

FF D8 FF

REPREZENTACJA ASCII: ÿØÿ

Normalizacja: ISO/IEC 10918-1 / ITU-T T.81

Specyfikacja techniczna

Architektura konteneraStrumień binarny rozdzielany znacznikami (prefiks 0xFF) zawinięty w nagłówki JFIF lub EXIF
KompresjaStratna dyskretna transformata kosinusowa (DCT) + kodowanie entropowe długości serii i Huffmana
Kolejność bajtów (Endianness)Big-Endian dla długości znaczników i tablic kwantyzacji; Exif może być Little (II) lub Big (MM)
Przestrzenie kolorówsRGB, Adobe RGB, CMYK, Y'CbCr, Skala szarości
Kanały i struktura8 bitów na kanał (24-bitowy Truecolor) lub 8-bitowa skala szarości
Maks. wymiary65 535 x 65 535 pikseli (2-bajtowe liczby całkowite bez znaku)
PrzezroczystośćBrak (tylko nieprzezroczystość; brak obsługi kanału alfa)
Streaming i progresywne ładowanieProgresywne kodowanie JPEG zapisuje dane w wielu przebiegach widmowych, od niskiej do wysokiej rozdzielczości.

Techniczna macierz porównawcza: JPG a konkurencja

Atrybut technicznyJPG (Bieżący)WebPAVIFPNG
Paradygmat kompresjiStratny DCT + kodowanie HuffmanaStratny (VP8) i bezstratnyStratny (AV1) i bezstratnyBezstratny Deflate
Przezroczystość alfaBrak obsługi kanału alfa (zawsze nieprzezroczysty)8-bitowa przezroczystość alfa8-bitowe / 10-bitowe / 12-bitowe alfaPełne 8-bitowe / 16-bitowe alfa
Dekodowanie sprzętoweObsługa dedykowanego sprzętowego dekodowania JPEG zależy od układu i urządzenia.Powszechne dekodowanie sprzętowe w nowoczesnych układach SoCSzybko rosnące dekodowanie sprzętowe w nowoczesnych procesorach GPUSzybkie dekodowanie oparte na procesorze CPU
Wydajność kompresjiDobra wartość odniesienia dla fotografiiO 25%-35% mniejszy niż JPEG przy tej samej jakościO 40%-55% mniejszy niż JPEG przy tej samej jakościNieefektywny dla zawartości fotograficznej
Głębia kolorówStandardowe 8 bitów na kanał (24-bitowy Truecolor)8 bitów na kanał10-bitowe i 12-bitowe HDR z szeroką paletą barw8 i 16 bitów na kanał

Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego

Przeglądarka obrazów pokazuje komunikat „Przedwczesny koniec pliku JPEG" lub dolna część zdjęcia jest jednorodnie szara lub ma kolorowe pasy.

Główna przyczyna: Przerwane pobieranie lub niepełny zapis na dysku, w którym brakuje znacznika końca strumienia 0xFFD9 (EOI) oraz danych skanowania obrazu.

Odzyskiwanie: Dołącz znacznik 0xFFD9 na końcu uciętego strumienia, aby umożliwić dekoderom wyświetlenie nienaruszonej górnej części fotografii.

Kolory obrazu wydają się mocno przesunięte, odwrócone lub psychodeliczne.

Główna przyczyna: Odwrócony nagłówek przestrzeni kolorów CMYK lub nieprawidłowy osadzony profil ICC.

Odzyskiwanie: Skonwertuj przestrzeń kolorów z CMYK do sRGB za pomocą ImageMagick („magick broken.jpg -colorspace sRGB fixed.jpg").

Plik nie otwiera się i zgłasza błąd „Znaleziono nieprawidłowy znacznik".

Główna przyczyna: Uszkodzenie bitowe w nagłówkach tablicy kwantyzacji (DQT 0xFFDB) lub tablicy Huffmana (DHT 0xFFC4).

Odzyskiwanie: Zastąp uszkodzone znaczniki nagłówka standardowymi bazowymi tablicami Huffmana i kwantyzacji JFIF wyodrębnionymi z nienaruszonego pliku JPEG.

Analiza bezpieczeństwa i wektory ataku na parser

Bezpieczeństwo JPEG wiąże się przede wszystkim z wyciekami danych EXIF naruszającymi prywatność oraz przepełnieniami bufora w starszych dekoderach języka C (libjpeg).

Znane wektory ataku

  • Ujawnienie poufnych metadanych: niewyczyszczone nagłówki EXIF zawierające współrzędne GPS, numery seryjne aparatów i podglądy miniatur.
  • Odczyty spoza bufora i przepełnienia liczb całkowitych w starszym parserze libjpeg mogą uszkadzać znaczniki restartu (RST) lub skrypty skanowania progresywnego.
  • Pliki polimorficzne łączące nagłówki JPEG z wykonywalnymi archiwami ZIP lub RAR.

Najlepsze praktyki obronne: Zawsze usuwaj metadane EXIF i geolokalizację GPS ze zdjęć użytkowników przed publikacją, aby chronić ich prywatność. Używaj nowoczesnych dekoderów bezpiecznych pod względem pamięci (takich jak image-rs w języku Rust) lub dekoderów działających w piaskownicy WebAssembly.

Pochodzenie historyczne i kamienie milowe

1998Standardy kontenerów JFIF i EXIF ustanawiają dominację aparatów cyfrowych.
1992Specyfikacja JPEG zatwierdzona jako ISO/IEC 10918-1.
1986Powstaje grupa Joint Photographic Experts Group w ramach ISO i CCITT.

Główne zalety

  • Dekodowanie JPEG jest szeroko obsługiwane przez oprogramowanie i urządzenia do obsługi obrazów, ale zgodność zależy od urządzenia i aplikacji.
  • Doskonałe współczynniki kompresji (od 10:1 do 20:1) dla fotograficznych tonów ciągłych.
  • Niewielki rozmiar pliku i możliwość progresywnego wyświetlania obrazu.

Ograniczenia techniczne i wady

  • Kompresja stratna powoduje artefakty (dzwonienie i widoczne bloki) wzdłuż ostrych krawędzi.
  • Brak obsługi kanału przezroczystości.
  • Strata generacyjna występuje za każdym razem, gdy plik jest dekompresowany, edytowany i ponownie zapisywany.

Ciekawe informacje techniczne

  • Klasyczny obraz testowy „Lenna", użyty do opracowania kompresji JPEG, został zeskanowany z wydania magazynu Playboy z listopada 1972 roku.
  • Podpróbkowanie chrominancji JPEG 4:2:0 zmniejsza o połowę rozdzielczość chrominancji zarówno w poziomie, jak i w pionie przy niemal zerowej degradacji percepcyjnej.
  • Każdy standardowy plik JPEG zaczyna się od znacznika 0xFFD8 (Start of Image) i kończy znacznikiem 0xFFD9 (End of Image).

Często zadawane pytania techniczne

Dlaczego wielokrotne zapisywanie pliku JPEG obniża jakość obrazu?

JPEG to nieodwracalnie stratny format kompresji. Za każdym razem, gdy dekompresujesz i ponownie zapisujesz plik JPEG, krok kwantyzacji DCT odrzuca szczegóły przestrzenne wysokiej częstotliwości i ponownie przybliża bloki pikseli 8x8, powodując skumulowane artefakty „straty generacyjnej".

Co to jest progresywny JPEG i dlaczego jest przydatny?

Standardowy bazowy JPEG dekoduje linię po linii od góry do dołu. Progresywny JPEG koduje dane obrazu w wielu przejściach widmowych, pozwalając przeglądarkom natychmiast renderować rozmycie całego obrazu w niskiej rozdzielczości i wyostrzać je progresywnie w miarę pobierania kolejnych bajtów.

Czym jest podpróbkowanie chrominancji (4:2:0 kontra 4:4:4)?

Ludzka siatkówka ma więcej komórek pręcikowych (luminancja/jasność) niż czopków (kolor). Format JPEG wykorzystuje to, zachowując pełną rozdzielczość jasności (Y) przy jednoczesnym zmniejszeniu o połowę rozdzielczości kolorów (Cb, Cr) w poziomie i w pionie (4:2:0), co pozwala odrzucić 50% surowych danych przed kompresją przy niezauważalnej dla oka stracie jakości.

Czy obraz JPEG może mieć przezroczyste tło?

Nie. Standardowa specyfikacja JPEG nie uwzględnia pojęcia kanału alfa. Jeśli wymagana jest przezroczystość, należy przekonwertować obraz do formatu WebP, AVIF lub PNG.