Base64を画像に変換

Base64入力0 キャラクター

オンラインで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画像をローカルファイルとして復元して表示

使い方

  1. Base64エンコードされた画像データを貼り付けます(Data URLプレフィックスの有無は問いません。例: data:image/png;base64,iVBORw0KG...)
  2. ツールがMIMEタイプを自動的に検出してデコードします(Data URLから認識するか、コンテンツヘッダーから推測します)
  3. 右側に画像プレビューとファイルサイズ、寸法情報がリアルタイムで表示されます
  4. 「ダウンロード」をクリックしてローカル画像ファイルとして保存するか、画像を右クリックして「名前を付けて画像を保存」を選択します
  5. デコードに失敗した場合は、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ライブラリでデコードして画像を保存

python

Python標準ライブラリの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で画像をデコード

java

Java標準ライブラリの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タイプ圧縮タイプ透明サポート代表的な場面
PNGimage/png可逆アイコン/スクリーンショット/Logo
JPGimage/jpeg非可逆写真/風景画像
WebPimage/webp非可逆/可逆モダンWebで推奨
GIFimage/gif可逆(256色)✅(1-bit)小さなアニメーション/シンプルなアイコン
SVGimage/svg+xmlベクターLogo/アイコン/イラスト
BMPimage/bmpなしオプションWindowsシステム画像
AVIFimage/avif非可逆/可逆次世代画像フォーマット
ICOimage/x-icon可逆ウェブサイトfavicon

Data URL vs HTTP URL画像読み込み比較

デコード後の画像はData URLとしてHTML/CSSに直接埋め込むことができます。従来のHTTP URLと比較します。

項目Data URLHTTP URL
HTTPリクエスト数01回
キャッシュ再利用難しい容易(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