Base64エンコードとは?メリットとデメリット

2024-04-02

HTMLでBase64画像を表示する方法

Base64エンコードは、バイナリデータをASCII文字列に変換する手法です。画像データをBase64エンコードすることで、HTMLファイル内に直接画像データを埋め込むことが可能になります。

Base64画像を表示するメリット

  • 画像ファイルの読み込み速度が向上する
  • 画像ファイルの管理が簡略化される
  • 画像ファイルの盗難を防ぐことができる
  • HTMLファイルの容量が大きくなる
  • 画像の編集が困難になる
  1. 画像ファイルをBase64エンコードする
  2. HTMLファイルにBase64エンコードされた画像データを記述する

Base64画像ファイルをエンコードする

Base64エンコードを行う方法はいくつかありますが、ここではオンラインツールを利用する方法をご紹介します。

  1. エンコードしたい画像ファイルをアップロードします。
  2. エンコードされた文字列が表示されますので、コピーします。
<img src="data:image/png;base64,エンコードされた文字列">
  • data:image/png;base64 は、画像データの種類とエンコード方式を指定します。
  • エンコードされた文字列 は、Base64エンコードされた画像データです。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQAAAADOpq50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAAYdEVYdFNvZnR3YXJlAE1hY3Jpb24gYnkgU1ZHIFRlY3Jpb25zLCBpbmtwOi8vd3d3LnNvdXJjZWZvcmUub3JnAAAAA6ABAAMAAQAAABAAABVY6+QAAAABJRU5ErkJggg==">

このコードは、以下のような画像を表示します。

注意点

  • Base64エンコードされた画像データは非常に長くなります。そのため、HTMLファイルの容量が大きくなる可能性があります。
  • Base64エンコードされた画像データを編集することは困難です。画像を編集したい場合は、元の画像ファイルを使用する必要があります。



<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Base64画像表示サンプル</title>
</head>
<body>
  <h1>Base64画像表示サンプル</h1>
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQAAAADOpq50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAAYdEVYdFNvZnR3YXJlAE1hY3Jpb24gYnkgU1ZHIFRlY3Jpb25zLCBpbmtwOi8vd3d3LnNvdXJjZWZvcmUub3JnAAAAA6ABAAMAAQAAABAAABVY6+QAAAABJRU5ErkJggg==">
</body>
</html>

このコードを実行すると、以下の画像が表示されます。

[画像: サンプル画像]

コード解説

  • <!DOCTYPE html>: HTML文書であることを宣言します。
  • <html lang="ja">: HTML文書の言語を日本語に設定します。
  • <head>: HTML文書のヘッダー部分です。
  • <meta charset="UTF-8">: 文字コードをUTF-8に設定します。
  • <title>Base64画像表示サンプル</title>: HTML文書のタイトルを設定します。
  • <h1>Base64画像表示サンプル</h1>: 見出し1を表示します。
  • <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQAAAADOpq50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAAYdEVYdFNvZnR3YXJlAE1hY3Jpb24gYnkgU1ZHIFRlY3Jpb25zLCBpbmtwOi8vd3d3LnNvdXJjZWZvcmUub3JnAAAAA6ABAAMAAQAAABAAABVY6+QAAAABJRU5ErkJggg==">: Base64エンコードされた画像データを埋め込んだ画像を表示します。

Base64エンコードされた画像データは、CSSファイルやJavaScriptファイルにも埋め込むことができます。

CSSファイル

background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQAAAADOpq50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAAYdEVYdFNvZnR3YXJlAE1hY3Jpb24gYnkgU1ZHIFRlY3Jpb25zLCBpbmtwOi8vd3d3LnNvdXJjZWZvcmUub3JnAAAAA6ABAAMAAQAAABAAABVY6+QAAAABJRU5ErkJggg==");

JavaScriptファイル

var image = new Image();
image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQAAAADOpq50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAAYdEVYdFNvZnR3YXJlAE1hY3Jpb2



HTMLでBase64画像を表示する他の方法

画像ファイルを直接参照する方法

コード例

<img src="image.png">

解説

  • img 要素の src 属性に、画像ファイルのパスを指定します。
  • 画像ファイルは、HTMLファイルと同じディレクトリに存在する必要があります。

メリット

  • シンプルでわかりやすい
  • 画像ファイルの編集が容易

SVG画像を使用する方法

<svg viewBox="0 0 100 100">
  <rect x="0" y="0" width="100" height="100" fill="red" />
</svg>
  • svg 要素を使用して、SVG画像を直接記述することができます。
  • SVG画像はベクター形式なので、拡大しても劣化しません。
  • 拡大しても劣化しない
  • 複雑な画像を作成するには、専門知識が必要

画像データをDataURL形式で埋め込む方法

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQAAAADOpq50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAAYdEVYdFNvZnR3YXJlAE1hY3Jpb24gYnkgU1ZHIFRlY3Jpb25zLCBpbmtwOi8vd3d3LnNvdXJjZWZvcmUub3JnAAAAA6ABAAMAAQAAABAAABVY6+QAAAABJRU5ErkJggg==">
  • data 属性を使用して、画像データをDataURL形式で埋め込むことができます。
  • DataURL形式は、Base64エンコードされた画像データを含むURLです。
  • 画像ファイルが小さく、編集頻度が高い場合は、直接参照する方法がおすすめです。
  • 画像ファイルが複雑な場合は、SVG画像を使用する方法がおすすめです。
  • 画像ファイルの読み込み速度を重視する場合は、DataURL形式で埋め込む方法がおすすめです。

html image base64


Webページをもっと魅力的に!HTMLとCSSでテキスト挿入を使いこなそう

疑似要素を使う疑似要素は、HTML要素に装飾や機能を追加するために使用される特殊なセレクターです。":before"と":after"という2つの疑似要素を使用して、要素の前後にテキストを挿入することができます。例:p要素の前に「新着!」というテキストを追加する...


【初心者向け】Node.jsとExpressで画像アップロードを実装!画像を簡単かつ効率的に扱う方法

必要なものNode. jsnpmExpressMulter手順プロジェクトのセットアップ npm init -y npm install express multerプロジェクトのセットアップアップロード処理 以下のコードは、upload...


【初心者向け】スクロールバーを非表示にする方法!HTML、CSS、Google Chrome対応

この方法は、Chrome 以外のブラウザでも有効ですが、Chrome ではより洗練された方法があります。スクロールバーを非表示にする要素に overflow: scroll; プロパティを設定します。::-webkit-scrollbar 疑似要素を使用して、スクロールバーのスタイルをカスタマイズします。...


Flexbox vs float vs inline-block vs CSS Grid: 4つのアイテムを1行に並べる方法

HTMLまず、4つのアイテムをどのように配置したいか考えます。例えば、以下のような構造が考えられます。CSS次に、Flexboxを使って要素を配置します。以下のコードは、container要素をFlexboxコンテナにし、4つのアイテムを1行に並べるものです。...


viewport-units を使ってデバイスの画面サイズに関係なくレイアウトを一定に保つ方法

CSS3 の 100vh は、画面の高さの 100% を表す単位です。しかし、モバイルブラウザでは、アドレスバーやツールバーなどの UI 要素が画面の高さに含まれるため、100vh は一定ではなく、スクロールによって変化します。原因モバイルブラウザでは、画面の高さは、デバイスの物理的な高さではなく、ウィンドウの高さによって決定されます。ウィンドウの高さは、アドレスバーやツールバーなどの UI 要素によって変化するため、100vh も変化します。...


SQL SQL SQL SQL Amazon で見る



Base64エンコードのメリットとデメリット

HTMLファイルに直接画像データを埋め込む方法として、Base64エンコードされた画像データを使用する方法があります。これは、小さな画像やアイコンなど、ファイルサイズを小さくしたい場合に有効な手法です。Base64エンコードは、バイナリデータをテキストに変換する方法です。画像データのようなバイナリデータをBase64エンコードすると、文字列に変換されます。この文字列をHTMLファイルに埋め込むことで、画像を表示することができます。