Jika saya mengonversi gambar (jpg atau png) ke base64, apakah akan lebih besar, atau ukurannya sama? Seberapa besar itu?
Apakah disarankan untuk menggunakan gambar yang dikodekan base64 di situs web saya?
Jika saya mengonversi gambar (jpg atau png) ke base64, apakah akan lebih besar, atau ukurannya sama? Seberapa besar itu?
Apakah disarankan untuk menggunakan gambar yang dikodekan base64 di situs web saya?
Jawaban:
Ini akan menjadi sekitar 37% lebih besar:
Secara kasar, ukuran akhir data biner berenkode Base64 sama dengan 1,37 kali ukuran data asli
Berikut adalah ikhtisar yang sangat membantu tentang kapan harus menyandikan base64 dan kapan tidak oleh David Calhoun.
Jawaban dasar = file yang dikodekan base64 dengan gzip akan secara kasar sebanding dalam ukuran file dengan biner standar (jpg / png). File biner Gzip akan memiliki ukuran file yang lebih kecil.
Takeaway = Ada beberapa keuntungan untuk menyandikan dan meng-gzip ikon UI Anda, dll, tetapi tidak bijaksana untuk melakukan ini untuk gambar yang lebih besar.
Ini akan lebih besar di base64.
Base64 menggunakan 6 bit per byte untuk menyandikan data, sedangkan biner menggunakan 8 bit per byte. Juga, ada sedikit bantalan tambahan dengan Base64. Tidak semua bit digunakan dengan Base64 karena itu dikembangkan pertama kali untuk menyandikan data biner pada sistem yang hanya dapat memproses data non-biner dengan benar.
Itu berarti gambar yang dienkode akan menjadi sekitar 25% lebih besar, ditambah overhead konstan untuk padding.
Mengenkode gambar ke base64 akan membuatnya sekitar 30% lebih besar.
Lihat detailnya di artikel wikipedia tentang skema URI Data , yang menyatakan:
URI data berenkode Base64 berukuran 1/3 lebih besar dari padanan binernya. (Namun, overhead ini dikurangi menjadi 2-3% jika server HTTP mengompresi respons menggunakan gzip)
Jawabannya adalah: Tergantung.
Meskipun gambar base64 lebih besar, ada beberapa kondisi di mana base64 adalah pilihan yang lebih baik.
Ukuran gambar base64
Base64 menggunakan 64 karakter berbeda dan ini adalah 2 ^ 6. Jadi base64 menyimpan 6bit per karakter 8bit. Jadi proporsinya adalah 6/8 dari data yang tidak dikonversi ke data base64. Ini bukan kalkulasi pasti, tapi perkiraan kasar.
Contoh:
Gambar 48kb membutuhkan sekitar 64kb sebagai gambar yang dikonversi base64.
Perhitungan: (48/6) * 8 = 64
Kalkulator CLI sederhana pada sistem Linux:
$ cat /dev/urandom|head -c 48000|base64|wc -c
64843
Atau menggunakan gambar:
$ cat my.png|base64|wc -c
Gambar dan situs web Base64
Pertanyaan ini jauh lebih sulit untuk dijawab. Secara umum, karena gambar yang lebih besar kurang masuk akal menggunakan base64. Tetapi pertimbangkan poin-poin berikut:
Ini pasti akan membebani Anda lebih banyak ruang & bandwidth jika Anda ingin menggunakan gambar yang dikodekan base64. Namun jika situs Anda memiliki banyak gambar kecil, Anda dapat mengurangi waktu pemuatan halaman dengan mengkodekan gambar Anda ke base64 dan menempatkannya ke dalam html. Dengan cara ini, browser klien tidak perlu membuat banyak koneksi ke gambar, tetapi akan memilikinya dalam format html.