Konverter JPG ke Base64

Enkode gambar JPG dan JPEG sebagai Base64. Pertahankan file asli byte demi byte, atau enkode ulang dengan kualitas lebih rendah dan lebar lebih kecil agar string tetap pendek.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Seret file .jpg atau .jpeg ke area seret-lepas, klik untuk memilih file, atau tempel gambar.
  2. Untuk mempertahankan file persis seperti aslinya, jangan aktifkan konversi. Untuk memperkecilnya, pilih JPEG atau WebP di Konversi ke dan turunkan Kualitas.
  3. Atur Lebar maks. jika foto lebih besar daripada ukuran tampilannya nanti.
  4. Salin keluaran yang Anda perlukan, seperti tag img untuk halaman web atau Base64 mentah untuk API, atau unduh sebagai file.

Sekilas tentang JPEG

JPEG adalah format standar untuk foto. Format ini memakai kompresi lossy yang membuang detail yang nyaris tidak terlihat oleh mata, dan tidak mendukung transparansi. Ekstensi filenya .jpg, .jpeg, atau terkadang .jfif, tetapi tipe MIME-nya selalu image/jpeg; image/jpg bukan tipe yang terdaftar, meskipun banyak browser menoleransinya. Data URI JPEG diawali dengan data:image/jpeg;base64,/9j/, yaitu penanda awal gambar (start-of-image) yang sudah dienkode.

Memperkecil foto sebelum dienkode

Foto adalah kasus yang paling dirugikan oleh Base64: JPEG 200 KB menjadi sekitar 270 KB teks. Dua pengaturan memberi pengaruh terbesar:

  • Lebar maks. Membagi dua lebar gambar memangkas jumlah piksel menjadi seperempatnya. Foto ponsel selebar 4000 piksel jarang dibutuhkan dalam ukuran itu.
  • Kualitas. Nilai sekitar 70 hingga 80% biasanya tampak sama dengan aslinya di layar, tetapi jauh lebih kecil. Nilai yang sangat rendah memunculkan artefak berbentuk kotak-kotak.

Konversi ke WebP dengan kualitas serupa sering kali menghasilkan ukuran yang lebih kecil lagi. Perhatikan ukuran hasil enkode yang ditampilkan untuk setiap pengaturan, lalu pilih hasil terkecil yang masih terlihat baik.

Metadata EXIF

Foto dari kamera dan ponsel membawa metadata EXIF: model kamera, tanggal dan waktu, dan terkadang koordinat GPS. Tanpa konversi, keluaran Base64 berisi byte asli beserta metadatanya, dan siapa pun yang mendekodenya dapat membaca informasi tersebut. Itulah yang Anda inginkan jika file yang persis sama itu penting, misalnya ketika API memeriksa hash atau membaca tanggal pengambilan foto.

Konversi mengenkode ulang piksel di browser, dan data EXIF tidak ikut terbawa. Keluarannya lebih kecil dan tidak lagi mengungkapkan lokasi pengambilan foto.

Kapan data URI JPEG layak dipakai

Penggunaan yang cocok antara lain placeholder buram berukuran mungil (gambar selebar 20 hingga 40 piksel yang disematkan inline selagi foto lengkapnya dimuat secara lazy), thumbnail dalam respons JSON, dan ekspor HTML satu file. Gambar hero dan galeri sebaiknya disimpan sebagai file terpisah yang dapat di-cache oleh browser.

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

Pertanyaan yang sering diajukan

Apakah JPG sama dengan JPEG?

Ya. Ekstensi .jpg yang lebih pendek berasal dari sistem yang hanya mengizinkan tiga karakter. Keduanya adalah format yang sama dengan tipe MIME image/jpeg.

Apakah pengodean Base64 menurunkan kualitas JPEG?

Tidak. Base64 adalah representasi lossless dari byte file. Kualitas hanya berubah jika Anda memilih konversi, yang mengenkode ulang gambar dengan kualitas yang Anda tetapkan.

Bisakah data URI JPEG memiliki latar belakang transparan?
Tidak, JPEG tidak memiliki kanal alfa. Untuk transparansi, gunakan PNG atau WebP.
Apakah string Base64 berisi lokasi foto saya?

Bisa jadi. Jika JPEG asli memiliki data GPS dalam metadata EXIF-nya dan Anda mengenkodenya tanpa perubahan, lokasi tersebut ikut tersimpan di dalam string. Mengonversi gambar akan menghapus metadata EXIF.