🛠️

Whiz Tools

Build • Create • Innovate

Pengekod dan Penampil Imej Base64 | Tukar Base64 kepada Imej

Dekod dan pratonton rentetan imej yang dikodkan dalam base64 dengan serta-merta. Menyokong format biasa seperti JPEG, PNG, GIF dan pengendalian ralat untuk input yang tidak sah.

Pengekod dan Pemandu Imej Base64

Tampal rentetan imej yang dikodkan dalam base64 dan dekodkan untuk melihat imej.

Pratonton Imej

Tiada imej untuk dipaparkan. Tampal rentetan base64 untuk melihatnya didekod secara automatik.

Menyokong format JPEG, PNG, GIF dan format imej biasa yang lain.

Arahan

1. Tampal rentetan imej yang dikodkan dalam base64 di kawasan teks di atas.

2. Imej akan didekod secara automatik semasa anda menaip, atau klik butang 'Dekod Imej'.

3. Imej yang telah didekod akan muncul di kawasan pratonton di bawah.

Nota: Rentetan harus bermula dengan 'data:image/' untuk hasil terbaik, tetapi alat ini akan berusaha untuk mendekod rentetan tanpa awalan ini juga.

📚

Dokumentasi

Pengkod dan Penampil Imej Base64

Pengenalan

Base64 adalah skema pengekodan binari-ke-teks yang mewakili data binari dalam format rentetan ASCII. Ia biasanya digunakan untuk menyematkan data imej secara langsung dalam HTML, CSS, JavaScript, JSON, dan format berasaskan teks lain di mana data binari tidak dapat disertakan secara langsung. Alat ini membolehkan anda menguraikan rentetan imej yang dikodkan dalam base64 dan melihat imej yang dihasilkan secara langsung di pelayar anda.

Pengekodan Base64 meningkatkan saiz data sebanyak kira-kira 33% berbanding dengan binari asal, tetapi ia membolehkan imej disertakan secara langsung dalam dokumen berasaskan teks tanpa memerlukan muat turun fail yang berasingan. Ini boleh menjadi sangat berguna untuk imej kecil seperti ikon, logo, atau grafik sederhana di mana kemudahan penyematan melebihi peningkatan saiz.

Alat Pengkod Imej Base64 kami menyediakan antara muka yang mudah di mana anda boleh menampal rentetan imej yang dikodkan dalam base64 dan melihat imej yang diuraikan dengan serta-merta. Ia menyokong semua format imej biasa termasuk JPEG, PNG, GIF, WebP, dan SVG, dan boleh menangani kedua-dua format URL data (dengan awalan data:image/...) dan rentetan base64 mentah.

Butiran Teknikal

Format Pengekodan Base64

Pengekodan Base64 menukar data binari menjadi satu set 64 watak ASCII (A-Z, a-z, 0-9, +, dan /), dengan = digunakan untuk pengisian. Untuk imej di web, data base64 biasanya diformat sebagai URL data dengan struktur berikut:

1data:[<media type>][;base64],<data>
2

Sebagai contoh, imej PNG yang dikodkan dalam base64 mungkin kelihatan seperti:

1data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
2

Komponen format ini adalah:

  • data: - Skim URL
  • image/png - Jenis MIME data
  • ;base64 - Kaedah pengekodan
  • , - Pemisah antara header dan data
  • Data base64 yang dikodkan yang sebenar

Proses Penguraian

Apabila menguraikan rentetan imej base64, langkah-langkah berikut berlaku:

  1. Rentetan dianalisis untuk mengenal pasti jika ia mengandungi awalan URL data
  2. Jika awalan wujud, jenis MIME diekstrak untuk menentukan format imej
  3. Bahagian data base64 diasingkan dan diuraikan menjadi data binari
  4. Data binari ditukar menjadi Blob atau URL objek yang boleh dipaparkan sebagai imej

Jika input tidak termasuk awalan URL data, pengurai cuba menganggapnya sebagai data base64 mentah dan mengandaikan jenis imej daripada header binari yang diuraikan atau secara lalai kepada PNG.

Format Imej yang Disokong

Alat ini menyokong semua format imej web biasa:

FormatJenis MIMEKes Penggunaan Tipikal
JPEGimage/jpegFoto, imej kompleks dengan banyak warna
PNGimage/pngImej yang memerlukan ketelusan, tangkapan skrin, grafik
GIFimage/gifAnimasi sederhana, imej dengan warna terhad
WebPimage/webpFormat moden dengan pemampatan yang lebih baik daripada JPEG/PNG
SVGimage/svg+xmlGrafik vektor, ikon dan ilustrasi yang boleh diskalakan

Kes Penggunaan

Imej yang dikodkan dalam base64 mempunyai beberapa aplikasi praktikal dalam pembangunan web dan sebaliknya:

  1. Menyematkan imej dalam HTML/CSS/JS: Mengurangkan permintaan HTTP dengan menyertakan imej secara langsung dalam kod anda, yang boleh meningkatkan masa muat halaman untuk imej kecil.

  2. Templat emel: Memastikan imej dipaparkan dengan betul dalam klien emel yang menyekat imej luar secara lalai.

  3. Aplikasi fail tunggal: Membuat aplikasi HTML yang berdiri sendiri di mana semua sumber disematkan dalam satu fail.

  4. Tindak balas API: Menyertakan data imej secara langsung dalam tindak balas JSON tanpa memerlukan titik akhir imej yang berasingan.

  5. URL data dalam CSS: Menyematkan ikon kecil dan imej latar secara langsung dalam fail CSS.

  6. Manipulasi kanvas: Memudahkan penyimpanan dan pemindahan data imej kanvas.

  7. Aplikasi luar talian: Menyimpan imej sebagai rentetan teks dalam localStorage atau IndexedDB.

Pertimbangan Prestasi

Walaupun pengekodan base64 menawarkan kemudahan, ia datang dengan pertukaran:

  • Saiz fail yang meningkat: Pengekodan base64 meningkatkan saiz data sebanyak kira-kira 33%.
  • Tiada caching pelayar: Imej yang disematkan tidak boleh disimpan dalam cache secara berasingan seperti fail imej luar.
  • Beban penguraian: Pelayar mesti menguraikan rentetan base64 sebelum memaparkan.
  • Cabaran penyelenggaraan: Imej yang disematkan lebih sukar untuk dikemas kini daripada fail yang dirujuk.

Untuk prestasi yang optimum, pengekodan base64 biasanya disyorkan hanya untuk imej kecil (di bawah 10KB). Imej yang lebih besar biasanya lebih baik disajikan sebagai fail berasingan yang boleh disimpan dalam cache dan dioptimumkan dengan betul.

Alternatif

Terdapat beberapa alternatif kepada pengekodan base64 untuk pelbagai kes penggunaan:

  1. Penyematan SVG dalam talian: Untuk grafik vektor, SVG dalam talian sering memberikan prestasi dan fleksibiliti yang lebih baik daripada SVG yang dikodkan dalam base64.

  2. WebP dan format imej moden: Ini memberikan pemampatan yang lebih baik daripada JPEG/PNG yang dikodkan dalam base64.

  3. Sprite imej: Menggabungkan beberapa imej kecil ke dalam satu fail dan menggunakan pemposisian CSS.

  4. CDN (Rangkaian Penghantaran Kandungan): Untuk laman pengeluaran, menyajikan imej yang dioptimumkan dari CDN sering kali lebih cekap.

  5. Pemampatan data: Untuk memindahkan sejumlah besar data binari, algoritma pemampatan khusus seperti gzip atau Brotli lebih cekap daripada base64.

Contoh Kod

Berikut adalah contoh bekerja dengan imej yang dikodkan dalam base64 dalam pelbagai bahasa pengaturcaraan:

1// Menukar imej kepada base64 dalam JavaScript (pelayar)
2function imageToBase64(imgElement) {
3  const canvas = document.createElement('canvas');
4  canvas.width = imgElement.width;
5  canvas.height = imgElement.height;
6  
7  const ctx = canvas.getContext('2d');
8  ctx.drawImage(imgElement, 0, 0);
9  
10  // Dapatkan sebagai URL data (rentetan base64)
11  return canvas.toDataURL('image/png');
12}
13
14// Paparkan imej base64
15function displayBase64Image(base64String) {
16  const img = new Image();
17  
18  // Tangani rentetan tanpa awalan URL data
19  if (!base64String.startsWith('data:')) {
20    base64String = `data:image/png;base64,${base64String}`;
21  }
22  
23  img.src = base64String;
24  document.body.appendChild(img);
25}
26

Pelaksanaan HTML

Berikut adalah cara untuk menyematkan imej base64 secara langsung dalam HTML:

1<!-- Menyematkan imej base64 secara langsung dalam HTML -->
2<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Imej yang dikodkan dalam base64">
3
4<!-- Menggunakan CSS dengan imej latar base64 -->
5<style>
6.base64-bg {
7  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');
8  width: 100px;
9  height: 100px;
10}
11</style>
12<div class="base64-bg"></div>
13

Sejarah

Pengekodan base64 mempunyai akar dalam pembangunan sistem emel elektronik pada tahun 1970-an. Ia direka untuk menyelesaikan masalah pemindahan data binari melalui sistem yang direka untuk hanya menangani teks ASCII.

Skema pengekodan ini telah diformalisasikan pada tahun 1987 dengan penerbitan RFC 989, yang mendefinisikan standard Privacy Enhanced Mail (PEM). Ini kemudiannya dikemas kini dalam RFC 1421 dan standard lain yang berkaitan. Istilah "base64" itu sendiri berasal daripada fakta bahawa pengekodan menggunakan 64 watak ASCII yang berbeza untuk mewakili data binari.

Dalam konteks pembangunan web, imej yang dikodkan dalam base64 semakin popular dengan kemunculan URL data, yang pertama kali dicadangkan dalam RFC 2397 pada tahun 1998. Ini membolehkan data binari disertakan secara langsung dalam HTML, CSS, dan dokumen web lain.

Penggunaan imej yang dikodkan dalam base64 dalam pembangunan web menjadi lebih meluas pada pertengahan 2000-an ketika pemaju mencari cara untuk mengurangkan permintaan HTTP dan meningkatkan masa muat halaman. Teknik ini diterima dengan baik semasa kebangkitan pembangunan web mudah alih, di mana meminimumkan permintaan adalah penting untuk prestasi pada sambungan mudah alih yang lebih perlahan.

Hari ini, pengekodan base64 kekal sebagai alat penting dalam pembangunan web, walaupun penggunaannya telah menjadi lebih terarah kerana amalan terbaik telah berkembang. Pendekatan moden cenderung menggunakan pengekodan base64 secara selektif untuk imej kecil yang kritikal sambil memanfaatkan kaedah penghantaran yang lebih cekap seperti HTTP/2 untuk aset yang lebih besar.

Rujukan

  1. RFC 4648: Pengekodan Data Base16, Base32, dan Base64
  2. RFC 2397: Skim URL "data"
  3. MDN Web Docs: URL data
  4. CSS-Tricks: URL data
  5. Pengodok Imej Base64
  6. Bolehkah Saya Menggunakan: URL data
  7. Prestasi Web: Bila untuk Mengkod Imej dalam Base64 (dan Bila Tidak)