web-dev-qa-db-ja.com

base64エンコードされた画像サイズ

画像(jpgまたはpng)をbase64に変換すると、画像は大きくなりますか、それとも同じサイズになりますか?それはどれくらい大きいですか?

ウェブサイトでbase64でエンコードされた画像を使用することをお勧めしますか?

75
Danny Fox

約37%大きくなります。

おおよそ、Base64でエンコードされたバイナリデータの最終サイズは、元のデータサイズの1.37倍に等しくなります。

ソース: http://en.wikipedia.org/wiki/Base64

113
Blender

base64エンコードする場合としない場合の本当に役立つ概要 David Calhoun.

基本的な回答= gzip圧縮されたbase64エンコードファイルは、ファイルサイズが標準バイナリ(jpg/png)にほぼ匹敵します。 Gzipされたバイナリファイルのファイルサイズは小さくなります。

Takeaway= UIアイコンなどをエンコードしてgzipすることにはいくつかの利点がありますが、大きな画像に対してこれを行うのは賢明ではありません。

12
bulldog

Base64では大きくなります。

Base64は1バイトあたり6ビットを使用してデータをエンコードしますが、バイナリは1バイトあたり8ビットを使用します。また、Base64には少しパディングのオーバーヘッドがあります。 Base64は、非バイナリデータのみを正しく処理できるシステムでバイナリデータをエンコードするためにそもそも開発されたため、すべてのビットがBase64で使用されるわけではありません。

つまり、エンコードされた画像は約25%大きくなり、さらにパディングのオーバーヘッドが一定になります。

8
Eric J.

画像をbase64にエンコードすると、約30%大きくなります。

データURIスキーム に関するウィキペディアの記事の詳細を参照してください。

Base64でエンコードされたデータURIは、同等のバイナリよりもサイズが1/3大きくなります。 (ただし、HTTPサーバーがgzipを使用して応答を圧縮する場合、このオーバーヘッドは2〜3%に減少します)

5
Oded

base64-imagesのサイズ

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-imagesおよびWebサイト

この質問は答えるのがはるかに難しいです。一般的に言えば、base64を使用すると、イメージが大きくなるほど感覚が低下します。ただし、次の点を考慮してください。

  • HTMLファイルまたはCSSファイルに埋め込まれた画像の多くは、同様の文字列を持つことができます。 PNGの場合、「A」文字が繰り返し表示されることがよくあります。 gzip( "deflate"と呼ばれることもあります)を使用すると、サイズが大きくなる場合があります。しかし、それは画像の内容に依存します。
  • HTTP1.1のリクエストオーバーヘッド:特に多くのCookieを使用すると、リクエストごとに数キロバイトのオーバーヘッドが簡単に発生します。 base64イメージを埋め込むと、帯域幅が節約される場合があります。
  • Gzipはbase64よりもXMLの方が効果的であるため、SVG画像をbase64でエンコードしないでください。
  • プログラミング:動的に生成された画像では、2つの依存するリクエストを調整するため、1つのリクエストで画像を配信する方が簡単です。
  • ディープリンク:画像のダウンロードを防止する場合、HTMLページから画像を抽出するのは少し面倒です。

したがって、答えは次のとおりです。

4
Trendfischer

Base64でエンコードされた画像を使用する場合、間違いなくより多くのスペースと帯域幅が必要になります。ただし、サイトに小さな画像が多数ある場合は、画像をbase64にエンコードしてHTMLに配置することにより、ページの読み込み時間を短縮できます。このようにして、クライアントブラウザーは画像に多くの接続を作成する必要はありませんが、画像をHTMLで保持します。

2
user1766330