Base64画像エンコーダー
画像をBase64データURIに変換(HTML・CSS用)
画像をここにドロップするかクリックしてアップロード
PNG、JPG、SVG、WebP、GIF、AVIFに対応
Base64画像エンコードとは?
Base64画像エンコードは、バイナリ画像データをASCII文字列に変換し、外部ファイルを参照せずにHTML・CSS・JSONに直接埋め込めるようにする技術です。変換結果はデータURI——data:image/png;base64,に始まり、その後に画像のBase64エンコードされたバイト列が続く自己完結型の文字列です。ブラウザはデータURIを外部画像URLとまったく同様に扱い、Base64ペイロードをデコードして画像をインラインで描画します。
この技術はRFC 2397(データURIスキーム)とRFC 4648(Base64エンコード)で定義されています。画像をBase64エンコードすると、バイナリピクセルデータの3バイトごとに4つのASCII文字になり、データ量が約33%増加します。このオーバーヘッドはあるものの、インライン画像はアセットごとのHTTPリクエストを排除できます——画像が小さい(アイコン、ロゴ、1x1トラッキングピクセルなど)場合、個別リクエストの往復レイテンシが余分なバイトのコストを上回るため、意味のある最適化となります。
データURIはすべてのモダンブラウザ、メールクライアント(一部制約あり)、および標準URI構文を受け付けるあらゆるコンテキストで利用できます。ネットワークリクエスト数の削減によって体感表示速度を向上させたい場面——シングルページアプリケーション、HTMLメールテンプレート、SVGスプライト、CSSのbackground-image宣言——で広く使用されています。
このBase64画像エンコーダーを使う理由
このツールはブラウザ上で直接、すぐに使えるデータURIに画像を変換します——アップロード不要、サーバー不要、アカウント不要です。
Base64画像エンコードのユースケース
データURIの構造
データURIは画像フォーマットとバイナリコンテンツを1つの文字列にエンコードします。プログラムでデータURIを構築・解析する際に、その構造を理解しておくと役立ちます:
| コンポーネント | 説明 |
|---|---|
| data: | URI scheme identifier |
| image/png | MIME type of the image |
| ;base64, | Encoding declaration |
| iVBORw0KGgo... | Base64-encoded binary data |
Base64エンコード向け画像フォーマット比較
画像フォーマットの選択は、Base64出力サイズ、ブラウザサポート、レンダリング特性に影響します。コンテンツの種類に最も適したフォーマットを使用してください:
| フォーマット | MIMEタイプ | 透過 | 最適な用途 |
|---|---|---|---|
| PNG | image/png | Yes | Screenshots, icons, UI elements |
| JPEG | image/jpeg | No | Photos, gradients, large images |
| SVG | image/svg+xml | Yes | Logos, icons, scalable graphics |
| WebP | image/webp | Yes | Modern web images, smaller files |
| GIF | image/gif | Yes (1-bit) | Simple animations, small icons |
| ICO | image/x-icon | Yes | Favicons |
コード例
主要な言語・環境で画像をBase64データURIに変換する方法:
// Convert a File object to a Base64 data URI
function fileToDataUri(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onload = () => resolve(reader.result)
reader.onerror = reject
reader.readAsDataURL(file)
// reader.result → "data:image/png;base64,iVBORw0KGgo..."
})
}
// Convert a canvas element to a data URI
const dataUri = canvas.toDataURL('image/png')
// → "data:image/png;base64,iVBORw0KGgo..."
// Convert with quality parameter (JPEG/WebP only)
const jpegUri = canvas.toDataURL('image/jpeg', 0.8)
// → "data:image/jpeg;base64,/9j/4AAQ..."import base64
# Read an image file and encode it to a data URI
with open('logo.png', 'rb') as f:
encoded = base64.b64encode(f.read()).decode('ascii')
data_uri = f'data:image/png;base64,{encoded}'
# → "data:image/png;base64,iVBORw0KGgo..."
# Detect MIME type automatically
import mimetypes
mime, _ = mimetypes.guess_type('photo.jpg')
# mime → "image/jpeg"
with open('photo.jpg', 'rb') as f:
b64 = base64.b64encode(f.read()).decode('ascii')
data_uri = f'data:{mime};base64,{b64}'import { readFileSync } from 'fs'
import { lookup } from 'mime-types'
// Read file and encode to data URI
const buffer = readFileSync('icon.png')
const base64 = buffer.toString('base64')
const mime = lookup('icon.png') // → "image/png"
const dataUri = `data:${mime};base64,${base64}`
// → "data:image/png;base64,iVBORw0KGgo..."
// From a Buffer received via HTTP/API
function bufferToDataUri(buf, mimeType) {
return `data:${mimeType};base64,${buf.toString('base64')}`
}# Encode an image to Base64 (macOS) base64 -i logo.png | tr -d '\n' # Encode an image to a full data URI (Linux) echo -n "data:image/png;base64,$(base64 -w 0 logo.png)" # Encode and copy to clipboard (macOS) echo -n "data:image/png;base64,$(base64 -i logo.png | tr -d '\n')" | pbcopy # Detect MIME type and encode (Linux, requires file command) MIME=$(file -b --mime-type image.webp) echo -n "data:$MIME;base64,$(base64 -w 0 image.webp)"