画像(jpgまたはpng)をbase64に変換すると、画像は大きくなりますか、それとも同じサイズになりますか?それはどれくらい大きくなるでしょうか?
Webサイトでbase64でエンコードされた画像を使用することをお勧めしますか?
約37%大きくなります。
非常に大まかに言えば、Base64でエンコードされたバイナリデータの最終的なサイズは、元のデータサイズの1.37倍になります。
出典: http: //en.wikipedia.org/wiki/Base64
base64では大きくなります。
Base64は1バイトあたり6ビットを使用してデータをエンコードしますが、バイナリは1バイトあたり8ビットを使用します。また、Base64には少しパディングオーバーヘッドがあります。Base64は、非バイナリデータのみを正しく処理できるシステムでバイナリデータをエンコードするために最初に開発されたため、すべてのビットがBase64で使用されるわけではありません。
つまり、エンコードされた画像は約33%〜36%大きくなります(1バイトあたり2ビットを使用しない場合は33%、残りの3%はパディングの可能性があります)。
これは、 DavidCalhounによるbase64エンコードの場合とそうでない場合の非常に役立つ概要です 。
基本的な答え=gzipで圧縮されたbase64でエンコードされたファイルは、ファイルサイズが標準のバイナリ(jpg / png)とほぼ同等になります。Gzipで圧縮されたバイナリファイルのファイルサイズは小さくなります。
要点=UIアイコンなどをエンコードしてgzipすることにはいくつかの利点がありますが、大きな画像の場合はこれを行うのは賢明ではありません。
答えは:それは異なります。
base64-imagesの方が大きいですが、base64がより適切な条件がいくつかあります。
base64画像のサイズ
Base64は64の異なる文字を使用し、これは2^6です。したがって、base64は8ビット文字あたり6ビットを格納します。したがって、比率は、変換されていないデータからbase64データへの6/8です。これは正確な計算ではありませんが、概算です。
例:
48kbの画像は、base64で変換された画像として約64kbが必要です。
計算:(48/6)* 8 = 64
LinuxシステムでのシンプルなCLI計算機:
$ cat /dev/urandom|head -c 48000|base64|wc -c
64843
または画像を使用する:
$ cat my.png|base64|wc -c
Base64-画像とウェブサイト
この質問に答えるのははるかに困難です。一般的に言えば、base64を使用すると、画像が大きくなり、意味がなくなります。ただし、次の点を考慮してください。
画像をbase64にエンコードすると、画像が約30%大きくなります。
データURIスキームに関するウィキペディアの記事の詳細を参照してください。
Base64でエンコードされたデータURIは、同等のバイナリよりもサイズが1/3大きくなります。(ただし、HTTPサーバーがgzipを使用して応答を圧縮する場合、このオーバーヘッドは2〜3%に削減されます)
base64でエンコードされた画像を使用する場合は、間違いなくより多くのスペースと帯域幅が必要になります。ただし、サイトに小さな画像がたくさんある場合は、画像をbase64にエンコードして、htmlに配置することで、ページの読み込み時間を短縮できます。このように、クライアントブラウザは画像に多くの接続を行う必要はありませんが、HTMLでそれらを保持します。
base64に変換するということは、単に次のことを意味します。
バイナリデータを解析し、6ビットのチャンクで読み取り、それを何らかの表現に変換します
注:すべてが単なるバイナリデータです。すべての文字列、数字などは、メモリに保存されている単なるバイナリデータです。あなたがそれをどのように読むか、そしてあなたはその読書を何にマッピングするかが私たちがするすべてです。
この6ビットのシーケンスには、Base64で定義された表現標準(以下に示す)があります。
着信ストリームが000000->A、000001->Bなどの場合。
これで、文字自体の表現は8ビットになります。したがって、1文字あたりさらに2ビットを使用するようになったため、データサイズは元の値の4/3に増加しました。