Base64イメージの埋め込み


564

純粋に好奇心から、Base64画像の埋め込みはどのブラウザで機能しますか?私が言及しているのはこれです。

ページサイズがかなり大きくなるため、通常はほとんどの場合適切な解決策ではないことに気づきました。

いくつかの例:

HTML:

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

CSS:

div.image {
  width:100px;
  height:100px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...);
}

3
例を使ってページをセットアップしないでください。私たちは全員、実際のテストを実施して、ここで報告します
Nir Levy

4
64ビットは6文字2 ^ 6しかかかりません。テキスト文字列は、エンコーディングタイプに応じて、1文字あたり8ビット以上になります。少なくとも25%の効率が失われます。私の簡単なテストでは、約30%の損失が示されました。

4
さらに重要なことは、おそらくあなたは自分のものを効果的にキャッシュする能力を失うでしょう。
Hut8

6
@BrianHaakは「途方もなく」何も言わない。私は過去2年間、ReactJでbase64画像を数回使用しており、レンダリングの問題はまったくありませんでした。いくつかの測定を提供してください。
Lukas Liesis

1
@LukasLiesis商用目的でGoogle Chromeで測定を行ったため、ここには公開レポートはありません。ユニークな画像のレンダリングには問題ないかもしれませんが、キャッシュがまったく機能しないことを考慮する必要があります。React.jsでは、それが完全な再レンダリングパーツ(ナビゲーションの変更など)につながる場合は非常に重要です。
Brian Haak 2017年

回答:


361

更新:2017-01-10

データURIがすべての主要なブラウザーでサポートされるようになりました。IEは、バージョン8以降の埋め込み画像もサポートしています。

http://caniuse.com/#feat=datauri


データURIが次のWebブラウザーでサポートされるようになりました。

  • Firefox、SeaMonkey、XeroBank、Camino、Fennec、K-MeleonなどのGeckoベース
  • Konqueror、KDEのKIOスレーブ入出力システム経由
  • Opera(ニンテンドーDSiやWiiなどのデバイスを含む)
  • Safari(iOSを含む)、Androidのブラウザー、Epiphany、MidoriなどのWebKitベース(WebKitはKonquerorのKHTMLエンジンの派生物ですが、Mac OS XはKIOアーキテクチャを共有していないため、実装は異なります)、およびWebkit / Chromeなどのクロムベース
  • トライデント
    • Internet Explorer 8:Microsoftは、データURIに埋め込まれたJavaScriptがWebベースの電子メールクライアントで使用されるようなスクリプトフィルターで解釈できない可能性があるなどのセキュリティ上の理由により、特定の「ナビゲート不可能な」コンテンツへのサポートを制限しています。データURIは、バージョン8 [3]では32 KiB未満である必要があります。
    • データURIは、次の要素または属性、あるいはその両方でのみサポートされています[4]。
      • オブジェクト(画像のみ)
      • img
      • 入力タイプ=画像
      • リンク
    • background-image、background、list-style-type、list-styleなどのURLを受け入れるCSS宣言。
    • Internet Explorer 9:Internet Explorer 9には32KiBの制限がなく、幅広い要素で使用できます。
    • TheWorldブラウザ:データURIスキームのサポートが組み込まれているIEシェルブラウザ

http://en.wikipedia.org/wiki/Data_URI_scheme#Web_browser_support


こんにちはフィリップ、IE8の32 KiBサイズ制限の回避策はありますか?IE64はIE7とIE6でサポートされていますか?いいえの場合、回避策(サイズ制限なし)はありますか?はいの場合、サイズ制限はありますか?はいの場合、回避策はありますか?
SexyBeast

これを調べ

規格は何か言いますか?良い答えの更新のための一定の賛成投票=)。
Ciro Santilli郝海东冠状病六四事件法轮功

5
IE8の制限-私が見つけたのは、IE8の埋め込み画像の最大文字数制限が32,768Microsoftあたり)であり、私の埋め込み画像が35,000をわずかに超えていたことです。したがって、background-imageCSSプロパティ(url(...embedded image)がIE8でロードしようとしたとき、文字数制限を超えていたためclass、プロパティを含む全体がロードされませんでした。私はこれを修正することはしませんでしたimg。最大値を超える埋め込み画像と、適切に読み込まれた画像に戻しました。
id.ot 2015年

53

Chrome、Mozilla、Internet Explorerなどの最新のデスクトップブラウザのほとんどは、データURLとしてエンコードされた画像をサポートしています。ただし、一部のモバイルブラウザではデータURLの表示に問題があります。AndroidStock BrowserとDolphin Browserでは埋め込みJPEGが表示さません。

オンラインのbase64エンコード/デコードに次のツールを使用することをお勧めします。

[データURLとしてフォーマット]オプションをオンにして、データURLとしてフォーマットします。


3
base64にエンコードするためのオンラインツールは必要ありません。代わりに、LinuxまたはMac OS Xでbase64コマンドラインツールを使用できます:echo "data:image / jpeg; base64、" $(cat file.jpg | base64)
cstroe

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.