Base64を画像に変換
左に写真を貼り付ける
オンラインでBase64エンコードデータをプレビュー可能な画像に復元してダウンロード。PNG/JPG/WebP/GIF/SVGなど7種類以上の一般的な画像フォーマットに対応しています。Data URLプレフィックスを自動的に認識し、ブラウザ内で直接プレビューできるため、APIデバッグやエンコード検証に適しています。
関連おすすめ
Base64を画像に変換するとは?
Base64から画像への変換は、Base64エンコードの逆のプロセスです。Base64エンコードされた文字列を元のバイナリ画像データ(PNG/JPG/WebP/GIF/SVGなどの形式)に復元し、ブラウザ内で直接プレビューしたりローカル画像ファイルとしてダウンロードしたりできます。APIが返す画像、インラインリソース(Data URL)、メール添付ファイルのBase64などを処理するための必須ツールです。
**基本的な原理:** Base64はバイナリデータを64個の印刷可能なASCII文字(A-Z、a-z、0-9、+、/)にエンコードします。画像への変換では、このASCII文字列を元のバイナリバイト列に復元し、ブラウザが指定されたMIMEタイプ(image/pngなど)に従って画像ピクセルとして解析し表示します。Data URL(例: `data:image/png;base64,iVBORw0KGgo...`)はBase64とMIMEプレフィックスを組み合わせた形式で、ツールが自動的に認識して処理します。
**代表的な使用例:** ①APIデバッグ:多くのAPIは画像認証コード、ユーザーアバター、電子署名を返す際にBase64文字列を直接返すため、フロントエンドで復元して確認する必要があります。②フロントエンド開発:Data URLで埋め込まれた小さなアイコン(CSS background-image: url(data:image/png;base64,...))をツールに貼り付けて実際の表示を確認できます。③メール添付ファイルの復元:MIME Base64でエンコードされた添付ファイルをデコードして元の画像として保存できます。④クローラーデータ:取得した画像のBase64をデコードしてローカルファイルとして保存できます。⑤OCR前処理:デコード後にOCRツールで画像内容を認識できます。
**対応画像フォーマット:** ツールはブラウザがネイティブに認識するすべての画像MIMEタイプに対応しています:PNG (image/png)、JPG/JPEG (image/jpeg)、WebP (image/webp)、GIF (image/gif)、SVG (image/svg+xml)、BMP (image/bmp)、AVIF (image/avif)、ICO (image/x-icon)など。各フォーマットには異なる圧縮アルゴリズムと適用場面があります:PNGは可逆圧縮でアイコンやスクリーンショットに適し、JPGは非可逆圧縮で写真に適し、WebPはモダンブラウザで推奨され、SVGはベクター形式でアイコンやロゴに適しています。
**デコードの安全性:** すべてのデコード処理はブラウザ内でJavaScriptを使用して行われ(`atob()` + `TextDecoder` または `Blob` APIベース)、画像のバイナリデータはいかなるサーバーにもアップロードされません。機密情報を含むBase64文字列(ユーザーアバター、社内スクリーンショットなど)も安心して使用でき、ページを閉じるとすべてのデータは自動的に消去されます。
ユースケース
- APIが返すBase64画像データをプレビューおよびダウンロード可能な画像ファイルに復元
- フロントエンドのインライン画像リソース(Data URL形式)が正しくエンコードされているか検証
- 画像アップロードAPIデバッグ時にBase64コンテンツが完全かどうか確認
- Base64画像をデザインやドキュメント用にローカルPNG/JPGファイルとして保存
- メール添付ファイルのBase64エンコードをデコードして画像として復元
- クローラーが取得した画像Base64を復元してディスクに保存
- Data URLをデコードしてSVGアイコンの実際のレンダリング結果を検証
- OCR/AI APIが返すBase64画像をローカルファイルとして復元して表示
使い方
- Base64エンコードされた画像データを貼り付けます(Data URLプレフィックスの有無は問いません。例: data:image/png;base64,iVBORw0KG...)
- ツールがMIMEタイプを自動的に検出してデコードします(Data URLから認識するか、コンテンツヘッダーから推測します)
- 右側に画像プレビューとファイルサイズ、寸法情報がリアルタイムで表示されます
- 「ダウンロード」をクリックしてローカル画像ファイルとして保存するか、画像を右クリックして「名前を付けて画像を保存」を選択します
- デコードに失敗した場合は、MIMEタイプを手動で指定するか、Base64 Cleanツールで前処理を行ってください
特徴
- オンライン画像プレビュー:デコード後にブラウザ内で直接画像を表示、ローカルにダウンロードする必要がありません
- マルチフォーマット対応:PNG/JPG/WebP/GIF/SVG/BMP/AVIFなど7種類以上の一般的な画像MIMEタイプに対応
- Data URL自動認識:data:image/png;base64,プレフィックスを自動的に除去し、純粋なBase64コンテンツを抽出してデコード
- 純粋なBase64入力:プレフィックスのない純粋なBase64文字列に対応し、MIMEタイプを指定可能
- 画像ファイルダウンロード:デコード後の画像をワンクリックでローカルPNG/JPGファイルとして保存可能
- リアルタイム文字カウント:入力文字数、デコード後のバイト数をリアルタイムで表示し、画像サイズの評価に便利
- エラー検出:デコード失敗時に具体的なエラー位置を通知(無効なBase64文字、長さの不一致、MIMEの不一致など)
- ブラウザ内ローカル処理・アップロードゼロ:すべてのデコードとプレビューはブラウザ内で完了し、サーバーを経由しません
- 完全な双方向互換性:「画像をBase64に変換」ツールとペアで使用することで、完全な双方向変換ワークフローを形成
コード例
JavaScript:ブラウザネイティブデコード+Blob URLプレビュー
javascriptブラウザネイティブのatob()+TextDecoder+Blob APIを使用してBase64をデコードし、ブラウザ内に画像を表示します。
// Base64→画像(ブラウザネイティブ実装)
function base64ToImage(base64String, mimeType = 'image/png') {
// 1. Data URLプレフィックスを除去(存在する場合)
const clean = base64String.replace(/^data:image\/\w+;base64,/, '');
// 2. ブラウザネイティブのatob()でバイナリ文字列にデコード
const binary = atob(clean);
// 3. Uint8Arrayに変換
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
// 4. <img>タグでプレビューするためのBlob URLを作成
const blob = new Blob([bytes], { type: mimeType });
const url = URL.createObjectURL(blob);
// 5. img.srcを設定すればプレビュー表示される
const img = document.createElement('img');
img.src = url;
img.onload = () => {
console.log(`画像サイズ: ${img.width}x${img.height}`);
console.log(`ファイルサイズ: ${bytes.byteLength} bytes`);
};
return { img, url, size: bytes.byteLength };
}
// 使用例:
const result = base64ToImage('iVBORw0KGgoAAAANSUhEUgAAAAUA...');
document.body.appendChild(result.img);
// Blob URLを解放(メモリリークを回避)
setTimeout(() => URL.revokeObjectURL(result.url), 60000);Python:base64ライブラリでデコードして画像を保存
pythonPython標準ライブラリのbase64でBase64データを画像バイナリストリームにデコードし、PIL/Pillowまたは組み込みのファイル操作で保存します。
import base64
from pathlib import Path
def base64_to_image(base64_string: str, output_path: str, mime_type: str = 'image/png'):
"""Base64文字列をデコードして画像ファイルとして保存"""
# 1. Data URLプレフィックスを除去
if base64_string.startswith('data:image'):
# 形式: data:image/png;base64,iVBORw0...
header, base64_string = base64_string.split(',', 1)
# ヘッダーからMIMEを自動抽出
if 'image/' in header:
mime_type = header.split('data:')[1].split(';')[0]
# 2. デコード
image_bytes = base64.b64decode(base64_string)
# 3. ファイルに保存
output_file = Path(output_path)
output_file.parent.mkdir(parents=True, exist_ok=True)
output_file.write_bytes(image_bytes)
print(f"✅ 保存完了: {output_file}")
print(f" ファイルサイズ: {len(image_bytes):,} bytes")
print(f" MIMEタイプ: {mime_type}")
return output_file
# 使用例:
# 1. APIレスポンスから取得したBase64文字列
api_base64_response = "iVBORw0KGgoAAAANSUhEUgAA..."
# 2. デコードして保存
base64_to_image(api_base64_response, 'output/captcha.png')
# 3. オプション:PILでさらに処理
try:
from PIL import Image
img = Image.open('output/captcha.png')
print(f"画像サイズ: {img.size}")
img.save('output/captcha.png', optimize=True)
except ImportError:
print('Pillowをインストールして画像を処理: pip install Pillow')Java:java.util.Base64+ImageIOで画像をデコード
javaJava標準ライブラリのBase64で画像バイナリストリームをデコードし、ImageIO/BufferedImageで画像メタデータを処理します。
import java.io.*;
import java.util.Base64;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class Base64ToImage {
public static void main(String[] args) throws Exception {
String base64String = "iVBORw0KGgoAAAANSUhEUgAA...";
String mimeType = "image/png";
// 1. Data URLプレフィックスを除去(存在する場合)
if (base64String.startsWith("data:image")) {
int commaIdx = base64String.indexOf(',');
String header = base64String.substring(0, commaIdx);
base64String = base64String.substring(commaIdx + 1);
// ヘッダーからMIMEを抽出
if (header.contains("image/")) {
mimeType = header.substring(header.indexOf("data:") + 5, header.indexOf(";"));
}
}
// 2. Base64デコード
byte[] imageBytes = Base64.getDecoder().decode(base64String);
// 3. ファイルに保存
String extension = mimeType.substring("image/".length());
File outputFile = new File("output." + extension);
try (FileOutputStream fos = new FileOutputStream(outputFile)) {
fos.write(imageBytes);
}
System.out.println("✅ 保存完了: " + outputFile.getAbsolutePath());
System.out.println(" ファイルサイズ: " + imageBytes.length + " bytes");
// 4. (オプション)画像メタデータを読み取り
ByteArrayInputStream bais = new ByteArrayInputStream(imageBytes);
BufferedImage image = ImageIO.read(bais);
if (image != null) {
System.out.println("画像サイズ: " + image.getWidth() + "x" + image.getHeight());
}
}
}よくある質問
どのような画像フォーマットに対応していますか?
PNG、JPG、WebP、GIF、SVG、BMP、AVIF、ICOなど、ブラウザがネイティブに認識するすべての画像MIMEタイプに対応しています。ツールはData URLのMIMEプレフィックスまたは入力の特徴に基づいて自動的に判別しますが、インターフェースでMIMEタイプを手動で指定することもできます。正しいフォーマットを選択することで、ブラウザが正しくデコードして表示できるようになります。
入力にはdata:image/png;base64プレフィックスが必要ですか?
必要ありません。ツールは2種類の入力形式に対応しています:①純粋なBase64文字列(例: iVBORw0KGgoAA...)- インターフェースでMIMEタイプ(PNG/JPGなど)を選択する必要があります。②Data URL形式(例: data:image/png;base64,iVBORw0KGgo...)- ツールがプレフィックス内のMIMEタイプを自動的に認識してデコードします。どちらの入力方式もサポートしています。
ブラウザ内で直接プレビューできますか?
はい、できます。デコード後の画像はBlob URLを介してブラウザ内に直接表示され、オンラインプレビューが可能です。内容が正しいことを確認してから、ローカルファイルとしてダウンロードしたり、HTML/CSS埋め込み用にData URLをコピーしたりできます。プレビュープロセス全体でネットワークリクエストは発生しません。
Base64をファイルに変換するツールとの違いは何ですか?
Base64を画像に変換するツールは画像形式に特化して最適化されています:①MIMEタイプを自動認識、②Blob URLを介してブラウザ内で直接プレビュー、③MIMEに基づいてファイル拡張子(.png/.jpgなど)を自動設定、④画像の寸法情報を表示。Base64をファイルに変換するツールは汎用ツールで、任意のバイナリファイル(PDF、ZIP、音声など)の復元とダウンロードに適しています。
デコード後の画像が不完全に表示される場合はどうすればよいですか?
考えられる原因:①Base64文字列が切り詰められている(長さが完全か確認してください);②MIMEタイプの指定が間違っている(例: PNGデータをJPGとしてデコードしている);③元のデータ自体が破損している。推奨事項:①元のBase64が完全であることを確認;②異なるMIMEタイプを試す;③Base64 Validateツールで正当性を確認。
Base64のサイズは元の画像よりどのくらい大きくなりますか?
Base64エンコードにより、元のバイナリデータのサイズは約33%増加します(3バイト→4文字)。例えば100KBのPNGをエンコードすると約133KBのBase64文字列になります。そのためBase64は小型画像(<10KB)に適しており、大きな画像はHTTP URLで直接転送することを推奨します。
SVGベクター画像に対応していますか?
はい、対応しています。SVGはXMLベースのベクター画像形式で、Base64エンコード後にHTML <img>やCSS background-imageに直接埋め込むことができます。デコード後はブラウザ内でベクター形式でレンダリングされ、無劣化で拡大縮小できます。SVGにはJavaScriptコードが含まれる可能性があるため、使用時はXSSセキュリティに注意してください。
指定した形式で保存するにはどうすればよいですか?
デコード後にダウンロードボタンをクリックすると、ツールはデコード時のMIMEタイプに基づいて対応する拡張子を自動的に追加します(image/png→.png、image/jpeg→.jpg)。フォーマットを変換したい場合(例: PNG→JPG)は、先にデコードしてから他のツール(Canvas/ImageMagickなど)で変換することを推奨します。
デコード後の画像が空白または破損しています
一般的な原因:①Base64に改行やスペースが含まれていてクリーンアップされていない——まずBase64 Cleanツールで前処理してください;②パディング(=)が欠けている——このツールが自動的に補完します;③MIMEタイプが元のデータと一致していない——元のAPIが返すContent-Typeを確認するか、他のMIMEを手動で試してください;④元のBase64が転送中に切り詰められた——完全な文字列を再取得してください。
大きな画像(>10MB)に対応していますか?
対応していますが、ブラウザの超大画像に対するレンダリングパフォーマンスは低下します。10MBのBase64(約7.5MBの元画像)のデコードは通常スムーズです;50MBを超えるとメモリ警告が表示される可能性があります。推奨事項:①まずbase64-cleanで空白を除去;②大きな画像を分割してデコード;③ブラウザのメモリが十分であることを確認(4GB以上を推奨)。
トラブルシューティング
デコード後の画像が空白で表示される
MIMEタイプが一致していないかBase64が不完全な可能性があります。確認項目:1)元のAPIが返すContent-Typeヘッダー;2)MIMEタイプを手動で切り替えて再試行;3)Base64文字列が完全であること(長さが期待通りであること)。
InvalidCharacterErrorでデコードに失敗する
Base64文字列に不正な文字(スペース、改行、日本語など)が含まれています。まずBase64 Cleanツールですべての空白と不正文字を除去してから変換してください。
ダウンロードした画像の拡張子が間違っている
デコード時のMIMEタイプが元の画像と一致しているか確認してください。元のAPIがimage/jpegを返しているのにBase64データが実際にはPNGである場合、ダウンロード後の拡張子は.jpgになりますが実際の形式はPNGになります。MIMEプレフィックスまたはContent-Typeヘッダーから元の形式を確認することを推奨します。
大きな画像をデコードするとブラウザがフリーズする
50MBを超えるBase64文字列はメモリ不足を引き起こす可能性があります。推奨事項:①まずbase64-cleanツールで空白文字を除去;②大きな画像を分割してデコード(例:タイル単位で分割);③ブラウザのメモリが十分であることを確認(4GB以上の空きメモリを推奨);④サーバーサイドのNode.js/Pythonスクリプトで超大画像を処理。
SVG画像をデコードしても表示されない
SVGはXMLベースのベクター形式です。デコード後は以下を確認してください:1)MIMEタイプにimage/svg+xmlを使用していること;2)SVGにエスケープされていない特殊文字が含まれていないこと;3)一部のブラウザはSVG内のJavaScriptコードにセキュリティ制限を設けていること。まずXML解析ツールでSVGの正当性を検証することを推奨します。
用語集
- Base64
- 64個のASCII文字でバイナリデータを表すエンコード方式で、RFC 4648で定義されています。このツールでは逆の処理を行い、Base64文字列を元の画像バイナリに復元します。
- Data URL
- RFC 2397で定義されたインラインURL形式:data:image/<MIME>;base64,<データ>。HTMLのimg srcやCSSのbackground-imageで直接使用できます。このツールはプレフィックスを自動的に認識して除去します。
- MIMEタイプ
- インターネットメディアタイプ。例: image/png、image/jpeg。ブラウザはMIMEに基づいてバイト列をどのように画像として解析するかを決定します。
- PNG
- 可逆圧縮のビットマップ形式で、透明チャンネルをサポートします。アイコン、スクリーンショット、ディテールを保持する必要がある画像によく使用されます。Base64後のサイズは元の約1.33倍になります。
- JPG/JPEG
- 非可逆圧縮のビットマップ形式で、写真に適しています。圧縮率は高いですが透明はサポートしません。Base64後のサイズは元の約1.33倍になります。
- WebP
- Googleが開発したモダンな画像形式で、可逆/非可逆圧縮と透明チャンネルの両方をサポートします。PNG/JPGより25-35%小さくなります。
- Blob (Binary Large Object)
- ブラウザネイティブのバイナリオブジェクト。Base64デコード後のバイト列を画像Blob URLとしてラップし、プレビューやダウンロードに使用できます。
8種類の画像フォーマット比較表
画像フォーマットによって圧縮アルゴリズム、特性、適用場面が異なります。
| フォーマット | MIMEタイプ | 圧縮タイプ | 透明サポート | 代表的な場面 |
|---|---|---|---|---|
PNG | image/png | 可逆 | ✅ | アイコン/スクリーンショット/Logo |
JPG | image/jpeg | 非可逆 | ❌ | 写真/風景画像 |
WebP | image/webp | 非可逆/可逆 | ✅ | モダンWebで推奨 |
GIF | image/gif | 可逆(256色) | ✅(1-bit) | 小さなアニメーション/シンプルなアイコン |
SVG | image/svg+xml | ベクター | ✅ | Logo/アイコン/イラスト |
BMP | image/bmp | なし | オプション | Windowsシステム画像 |
AVIF | image/avif | 非可逆/可逆 | ✅ | 次世代画像フォーマット |
ICO | image/x-icon | 可逆 | ✅ | ウェブサイトfavicon |
Data URL vs HTTP URL画像読み込み比較
デコード後の画像はData URLとしてHTML/CSSに直接埋め込むことができます。従来のHTTP URLと比較します。
| 項目 | Data URL | HTTP URL |
|---|---|---|
| HTTPリクエスト数 | 0 | 1回 |
| キャッシュ再利用 | 難しい | 容易(CDN/ブラウザ) |
| サイズ | 元画像+33% | 元画像サイズ |
| 適したサイズ | <10KB | 任意のサイズ |
| 圧縮転送 | 不可(エンコード済み) | gzip/Brotli |
| CSP制限 | 可能性あり | 通常許可 |
| サーバーストレージ | 不要 | 必要 |
| オフラインアクセス | ✅(ファイルレベル) | ❌(キャッシュが必要) |
Base64を画像に変換する際のよくあるエラー5選対照表
デコードエラーが発生した場合は、以下の表ですばやく問題を特定してください。
| エラー現象 | 考えられる原因 | 解決方法 |
|---|---|---|
| デコード失敗:InvalidCharacterError | スペース、改行、Base64以外の文字が含まれている | Base64 Cleanツールで前処理 |
| 画像が空白で表示される | MIMEタイプが元のデータと一致していない | 正しいMIMEに切り替え(例:PNGデータはimage/pngを使用) |
| 画像が不完全に表示される | Base64文字列が切り詰められている | 完全なBase64文字列を再取得 |
| パディングエラー | URL-safe Base64でパディングが省略されている | Base64 Paddingツールで=を補完 |
| ブラウザメモリ不足 | 画像が大きすぎる(>50MB) | 分割デコードするか画像圧縮ツールを使用 |
Authoritative References
- 安全文字列比較
- 二進数変換
- シーザー暗号
- モールス信号
- 16進数変換
- 動画→Base64変換
- Base64 を動画に変換
- 画像をBase64に変換
- Base64を画像に変換
- テキスト→Base64変換
- Base64→テキスト変換
- ファイルハッシュ検証
- File to Base64
- Base64→ファイル変換
- 音声→Base64
- Base64を音声に変換
- AES暗号化・復号化
- DES暗号化/復号
- Base32 エンコーダー デコーダー
- Base58 エンコードとデコード
- Base64 エンコード
- Base64 デコード
- Base64比較
- Base64 分割
- Base64複数行マージ
- Base64フォーマット
- Base64形式チェック
- Base64一括エンコード
- Base64一括デコード
- Base64クリーナー
- Base64 パディング処理
- Base64長さ統計
- Base64→16進数変換
- Base64 DataURL 変換
- Base64-Hex双方向変換
- Base85エンコーダー/デコーダー
- HMAC生成と検証
- PBKDF2鍵導出
- MD5 ハッシュ値
- SHA-256 ハッシュ
- SHA1 ハッシュ
- SHA512ハッシュ
- JWT デコーダー
- HTMLエンティティエンコード/デコード
- Unicodeエスケープ
- URL エンコード
- URL Safe Base64変換
- MIME Base64
- Java難読化
- JS難読化
- PHP難読化
- Python難読化