Jeśli przekonwertuję obraz (jpg lub png) na base64, to czy będzie większy, czy będzie miał ten sam rozmiar? O ile to będzie większe?
Czy jest zalecane używanie na mojej stronie obrazów zakodowanych w base64?
Jeśli przekonwertuję obraz (jpg lub png) na base64, to czy będzie większy, czy będzie miał ten sam rozmiar? O ile to będzie większe?
Czy jest zalecane używanie na mojej stronie obrazów zakodowanych w base64?
Odpowiedzi:
Będzie o około 37% większy:
Z grubsza, ostateczny rozmiar danych binarnych zakodowanych w formacie Base64 jest równy 1,37-krotności pierwotnego rozmiaru danych
Oto naprawdę pomocny przegląd tego, kiedy kodować base64, a kiedy nie, autorstwa Davida Calhouna.
Podstawowa odpowiedź = spakowane gzipem pliki zakodowane w base64 będą w przybliżeniu porównywalne pod względem rozmiaru do standardowych plików binarnych (jpg / png). Pliki binarne gzip będą miały mniejszy rozmiar.
Takeaway = Istnieje pewna zaleta kodowania i gzipowania ikon interfejsu użytkownika itp., Ale nierozsądne jest robienie tego w przypadku większych obrazów.
Będzie większy w base64.
Base64 używa 6 bitów na bajt do kodowania danych, podczas gdy binarny używa 8 bitów na bajt. Ponadto w przypadku Base64 jest trochę wyściółki. Nie wszystkie bity są używane w Base64, ponieważ został on opracowany w pierwszej kolejności do kodowania danych binarnych w systemach, które mogą poprawnie przetwarzać tylko dane niebinarne.
Oznacza to, że zakodowany obraz będzie o około 25% większy, plus stały narzut na wypełnienie.
Kodowanie obrazu do base64 sprawi, że będzie on o około 30% większy.
Zobacz szczegóły w artykule na Wikipedii o schemacie URI danych , gdzie stwierdza się:
Identyfikatory URI danych zakodowane algorytmem Base64 są o 1/3 większe niż ich odpowiedniki binarne. (Jednak ten narzut jest zmniejszony do 2-3%, jeśli serwer HTTP kompresuje odpowiedź za pomocą gzip)
Odpowiedź brzmi: to zależy.
Chociaż obrazy base64 są większe, istnieje kilka warunków, w których base64 jest lepszym wyborem.
Rozmiar obrazów base64
Base64 używa 64 różnych znaków, czyli 2 ^ 6. Więc base64 przechowuje 6 bitów na 8-bitowy znak. Zatem proporcja wynosi 6/8 z danych nieprzekonwertowanych na dane base64. To nie jest dokładne obliczenie, ale przybliżone oszacowanie.
Przykład:
Obraz 48kb potrzebuje około 64kb jako obraz przekonwertowany na base64.
Obliczenie: (48/6) * 8 = 64
Prosty kalkulator CLI w systemach Linux:
$ cat /dev/urandom|head -c 48000|base64|wc -c
64843
Lub używając obrazu:
$ cat my.png|base64|wc -c
Obrazy i strony internetowe Base64
Odpowiedź na to pytanie jest znacznie trudniejsza. Ogólnie rzecz biorąc, im większy obraz, tym mniej sensu przy użyciu base64. Ale rozważ następujące punkty:
Z pewnością będzie to kosztować więcej miejsca i przepustowości, jeśli chcesz używać obrazów zakodowanych w standardzie base64. Jeśli jednak Twoja witryna zawiera wiele małych obrazów, możesz skrócić czas ładowania strony, kodując obrazy do base64 i umieszczając je w html. W ten sposób przeglądarka klienta nie będzie musiała wykonywać wielu połączeń z obrazami, ale będzie miała je w html.