114

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

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

4

7 に答える 7

154

約37%大きくなります。

非常に大まかに言えば、Base64でエンコードされたバイナリデータの最終的なサイズは、元のデータサイズの1.37倍になります。

出典: http: //en.wikipedia.org/wiki/Base64

于 2012-07-09T20:13:00.597 に答える
18

base64では大きくなります。

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

つまり、エンコードされた画像は約33%〜36%大きくなります(1バイトあたり2ビットを使用しない場合は33%、残りの3%はパディングの可能性があります)。

于 2012-07-09T20:11:54.707 に答える
18

これは、 DavidCalhounによるbase64エンコードの場合とそうでない場合の非常に役立つ概要です

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

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

于 2013-08-02T20:55:23.703 に答える
12

答えは:それは異なります。

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を使用すると、画像が大きくなり、意味がなくなります。ただし、次の点を考慮してください。

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

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

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

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

于 2012-07-09T20:12:03.320 に答える
3

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

于 2012-10-22T19:17:55.120 に答える
0

base64に変換するということは、単に次のことを意味します。

バイナリデータを解析し、6ビットのチャンクで読み取り、それを何らかの表現に変換します

注:すべてが単なるバイナリデータです。すべての文字列、数字などは、メモリに保存されている単なるバイナリデータです。あなたがそれどのように読むか、そしてあなたはその読書を何にマッピングするかが私たちがするすべてです。

この6ビットのシーケンスには、Base64で定義された表現標準(以下に示す)があります。

ここに画像の説明を入力してください

着信ストリームが000000->A、000001->Bなどの場合。

これで、文字自体の表現は8ビットになります。したがって、1文字あたりさらに2ビットを使用するようになったため、データサイズは元の値の4/3に増加しました。

于 2021-08-07T15:32:37.903 に答える