JPG til Base64-konverter

Kod JPG- og JPEG-billeder som Base64. Behold den oprindelige fil byte for byte, eller kod den om med lavere kvalitet og mindre bredde, så strengen forbliver kort.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Træk en .jpg- eller .jpeg-fil hen på feltet, klik for at vælge en, eller indsæt et billede.
  2. Skal filen bevares præcis, som den er, så lad Konvertér til stå på Behold originalt format. Vil du gøre den mindre, så vælg JPEG eller WebP, og sænk Kvalitet.
  3. Vælg en Maks. bredde, hvis fotoet er større, end det skal vises.
  4. Kopiér det output, du har brug for, for eksempel img-tagget til en side eller rå Base64 til et API, eller download det som en fil.

JPEG kort fortalt

JPEG er standardformatet til fotografier. Det bruger tabsgivende komprimering, der kasserer detaljer, som øjet knap nok lægger mærke til, og det understøtter ikke gennemsigtighed. Filerne ender på .jpg, .jpeg eller sommetider .jfif, men MIME-typen er altid image/jpeg; image/jpg er ikke en registreret type, selv om mange browsere accepterer den. En JPEG-data URI starter med data:image/jpeg;base64,/9j/, som er den kodede start-of-image-markør.

Gør et foto mindre før kodningen

Det er ved fotos, at Base64 gør mest ondt: En JPEG på 200 KB bliver til ca. 270 KB tekst. To indstillinger gør den største forskel:

  • Maks. bredde. Når bredden halveres, falder antallet af pixel til en fjerdedel. Et mobilfoto på 4000 pixel i bredden er sjældent nødvendigt i den størrelse.
  • Kvalitet. Værdier omkring 70 til 80 % ser som regel ud som originalen på skærmen og er meget mindre. Meget lave værdier giver synlige blokartefakter.

Konvertering til WebP med en tilsvarende kvalitet giver ofte en endnu mindre fil. Hold øje med den kodede størrelse, der vises for hver indstilling, og behold det mindste resultat, der stadig ser rigtigt ud.

EXIF-metadata

Fotos fra kameraer og telefoner indeholder EXIF-metadata: kameramodel, dato og klokkeslæt og sommetider GPS-koordinater. Uden konvertering indeholder Base64-outputtet de oprindelige bytes inklusive metadata, og alle, der afkoder det, kan læse dem. Det er netop det, du vil have, når den præcise fil er vigtig, for eksempel når et API kontrollerer en hash eller læser optagelsesdatoen.

Ved konvertering koder browseren pixelene om, og EXIF-data bliver ikke overført. Outputtet bliver mindre og afslører ikke længere, hvor fotoet er taget.

Hvornår en JPEG-data URI er umagen værd

Gode eksempler er små slørede pladsholdere (et billede på 20 til 40 pixel i bredden, der indlejres, mens det fulde foto indlæses med lazy loading), miniaturer i JSON-svar og HTML-eksporter i én fil. Hero-billeder og gallerier hører hjemme i separate filer, som browseren kan cache.

# Python
import base64
with open('photo.jpg', 'rb') as f:
    uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')

Ofte stillede spørgsmål

Er JPG det samme som JPEG?

Ja. Den kortere filendelse .jpg stammer fra systemer, der kun tillod tre tegn i filendelsen. Begge betegner det samme format med MIME-typen image/jpeg.

Forringer Base64-kodning JPEG-kvaliteten?

Nej. Base64 er en tabsfri gengivelse af filens bytes. Kvaliteten ændres kun, hvis du vælger en konvertering, som koder billedet om med den kvalitet, du har angivet.

Kan en JPEG-data URI have gennemsigtig baggrund?
Nej, JPEG har ingen alfakanal. Brug PNG eller WebP, hvis du har brug for gennemsigtighed.
Afslører Base64-strengen, hvor mit foto er taget?

Det kan den. Hvis den oprindelige JPEG har GPS-data i sine EXIF-metadata, og du koder den uændret, står placeringen i strengen. Når du konverterer billedet, fjernes EXIF-metadataene.