Base64画像デコーダーおよびビューア | Base64を画像に変換
Base64エンコードされた画像文字列を即座にデコードしてプレビューします。JPEG、PNG、GIFなどの一般的なフォーマットをサポートし、無効な入力に対するエラーハンドリングも行います。
Base64画像デコーダーとビューア
Base64エンコードされた画像文字列を貼り付けて、画像を表示します。
画像プレビュー
表示する画像がありません。Base64文字列を貼り付けて自動的にデコードを確認してください。
JPEG、PNG、GIFなどの一般的な画像形式をサポートしています。
使い方
1. 上のテキストエリアにBase64エンコードされた画像文字列を貼り付けます。
2. タイプするにつれて画像が自動的にデコードされます。または「画像をデコード」ボタンをクリックします。
3. デコードされた画像が下のプレビューエリアに表示されます。
注:最良の結果を得るために、文字列は「data:image/」で始まるべきですが、このプレフィックスなしでもデコードを試みます。
ドキュメント
Base64 画像デコーダーとビューワー
はじめに
Base64は、バイナリデータをASCII文字列形式で表現するバイナリからテキストへのエンコーディングスキームです。これは、HTML、CSS、JavaScript、JSON、その他のテキストベースの形式に直接画像データを埋め込むために一般的に使用されます。このツールを使用すると、base64エンコードされた画像文字列をデコードし、結果の画像をブラウザで直接表示できます。
Base64エンコーディングは、元のバイナリと比較してデータサイズを約33%増加させますが、バイナリデータを直接含むことができないテキストベースのドキュメントに画像を含めることを可能にします。これは、埋め込みの利便性がサイズの増加を上回る小さな画像(アイコン、ロゴ、またはシンプルなグラフィックなど)に特に便利です。
私たちのBase64画像デコーダーツールは、base64エンコードされた画像文字列を貼り付けて、即座にデコードされた画像を見ることができるシンプルなインターフェースを提供します。JPEG、PNG、GIF、WebP、SVGなど、すべての一般的な画像形式をサポートしており、データURL形式(data:image/...
プレフィックス付き)と生のbase64文字列の両方を処理できます。
技術的詳細
Base64エンコーディング形式
Base64エンコーディングは、バイナリデータを64のASCII文字(A-Z、a-z、0-9、+、および/)のセットに変換し、=がパディングに使用されます。Web上の画像の場合、base64データは通常、次の構造を持つデータURLとしてフォーマットされます:
1data:[<media type>][;base64],<data>
2
例えば、base64エンコードされたPNG画像は次のようになります:
1data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
2
この形式の構成要素は次のとおりです:
data:
- URLスキームimage/png
- データのMIMEタイプ;base64
- エンコーディング方式,
- ヘッダーとデータの間の区切り- 実際のbase64エンコードされたデータ
デコーディングプロセス
base64画像文字列をデコードする際には、次のステップが行われます:
- 文字列を解析して、データURLプレフィックスが含まれているかどうかを確認します
- プレフィックスが存在する場合、画像形式を特定するためにMIMEタイプが抽出されます
- base64データ部分が分離され、バイナリデータにデコードされます
- バイナリデータがBlobまたは表示可能な画像として変換されるオブジェクトURLに変換されます
入力にデータURLプレフィックスが含まれていない場合、デコーダーはそれを生のbase64データとして扱おうとし、デコードされたバイナリヘッダーから画像タイプを推測するか、PNGにデフォルトします。
サポートされている画像形式
このツールは、すべての一般的なWeb画像形式をサポートしています:
形式 | MIMEタイプ | 一般的な使用ケース |
---|---|---|
JPEG | image/jpeg | 写真、色数の多い複雑な画像 |
PNG | image/png | 透明度が必要な画像、スクリーンショット、グラフィック |
GIF | image/gif | シンプルなアニメーション、制限された色の画像 |
WebP | image/webp | JPEG/PNGよりも優れた圧縮を提供する現代の形式 |
SVG | image/svg+xml | ベクターグラフィック、スケーラブルなアイコンやイラスト |
使用例
Base64エンコードされた画像には、Web開発やその他の分野でいくつかの実用的なアプリケーションがあります:
-
HTML/CSS/JSに画像を埋め込む:小さな画像をコードに直接含めることでHTTPリクエストを削減し、ページの読み込み時間を改善できます。
-
メールテンプレート:外部画像をデフォルトでブロックするメールクライアントで画像が正しく表示されることを保証します。
-
単一ファイルアプリケーション:すべてのリソースが単一のファイル内に埋め込まれた自己完結型のHTMLアプリケーションを作成します。
-
APIレスポンス:別の画像エンドポイントを必要とせずに、JSONレスポンスに直接画像データを含めます。
-
CSSのデータURI:小さなアイコンや背景画像をCSSファイルに直接埋め込みます。
-
キャンバス操作:キャンバス画像データの保存と転送を容易にします。
-
オフラインアプリケーション:localStorageやIndexedDBに画像をテキスト文字列として保存します。
パフォーマンスの考慮事項
Base64エンコーディングは利便性を提供しますが、トレードオフも伴います:
- ファイルサイズの増加:Base64エンコーディングはデータサイズを約33%増加させます。
- ブラウザキャッシュの未使用:埋め込まれた画像は、外部画像ファイルのように別々にキャッシュできません。
- 解析オーバーヘッド:ブラウザはレンダリングの前にbase64文字列をデコードする必要があります。
- メンテナンスの課題:埋め込まれた画像は、参照されたファイルよりも更新が難しいです。
最適なパフォーマンスのために、base64エンコーディングは一般的に小さな画像(10KB未満)に対してのみ推奨されます。大きな画像は、適切にキャッシュおよび最適化できる別々のファイルとして提供されるのが通常です。
代替手段
さまざまな使用ケースに対するbase64エンコーディングの代替手段がいくつかあります:
-
SVGのインライン埋め込み:ベクターグラフィックの場合、インラインSVGはbase64エンコードされたSVGよりもパフォーマンスと柔軟性を提供することがよくあります。
-
WebPおよび現代の画像形式:これらはbase64エンコードされたJPEG/PNGよりも優れた圧縮を提供します。
-
画像スプライト:複数の小さな画像を単一のファイルに結合し、CSSの位置決めを使用します。
-
CDN(コンテンツ配信ネットワーク):本番サイトの場合、最適化された画像をCDNから提供することがしばしばより効率的です。
-
データ圧縮:大量のバイナリデータを転送するために、gzipやBrotliなどの専門的な圧縮アルゴリズムがbase64よりも効率的です。
コード例
以下は、さまざまなプログラミング言語でbase64エンコードされた画像を扱う例です:
1// JavaScript(ブラウザ)で画像をbase64に変換する
2function imageToBase64(imgElement) {
3 const canvas = document.createElement('canvas');
4 canvas.width = imgElement.width;
5 canvas.height = imgElement.height;
6
7 const ctx = canvas.getContext('2d');
8 ctx.drawImage(imgElement, 0, 0);
9
10 // データURL(base64文字列)として取得
11 return canvas.toDataURL('image/png');
12}
13
14// base64画像を表示する
15function displayBase64Image(base64String) {
16 const img = new Image();
17
18 // データURLプレフィックスがない文字列を処理
19 if (!base64String.startsWith('data:')) {
20 base64String = `data:image/png;base64,${base64String}`;
21 }
22
23 img.src = base64String;
24 document.body.appendChild(img);
25}
26
1import base64
2from PIL import Image
3from io import BytesIO
4
5# 画像ファイルをbase64に変換
6def image_to_base64(image_path):
7 with open(image_path, "rb") as image_file:
8 encoded_string = base64.b64encode(image_file.read())
9 return encoded_string.decode('utf-8')
10
11# base64を画像に変換して保存
12def base64_to_image(base64_string, output_path):
13 # プレフィックスが含まれている場合は削除
14 if ',' in base64_string:
15 base64_string = base64_string.split(',')[1]
16
17 image_data = base64.b64decode(base64_string)
18 image = Image.open(BytesIO(image_data))
19 image.save(output_path)
20
21# 使用例
22base64_str = image_to_base64("input.jpg")
23print(f"data:image/jpeg;base64,{base64_str[:30]}...") # 文字列の先頭を表示
24
25base64_to_image(base64_str, "output.jpg")
26
1<?php
2// PHPで画像ファイルをbase64に変換
3function imageToBase64($path) {
4 $type = pathinfo($path, PATHINFO_EXTENSION);
5 $data = file_get_contents($path);
6 return 'data:image/' . $type . ';base64,' . base64_encode($data);
7}
8
9// base64を画像に変換して保存
10function base64ToImage($base64String, $outputPath) {
11 // プレフィックスが含まれている場合は抽出
12 $imageData = explode(',', $base64String);
13 $imageData = isset($imageData[1]) ? $imageData[1] : $imageData[0];
14
15 // デコードして保存
16 $data = base64_decode($imageData);
17 file_put_contents($outputPath, $data);
18}
19
20// 使用例
21$base64Image = imageToBase64('input.jpg');
22echo substr($base64Image, 0, 50) . "...\n"; // 文字列の先頭を表示
23
24base64ToImage($base64Image, 'output.jpg');
25?>
26
1import java.io.File;
2import java.io.FileOutputStream;
3import java.io.IOException;
4import java.nio.file.Files;
5import java.util.Base64;
6
7public class Base64ImageUtil {
8
9 // 画像ファイルをbase64に変換
10 public static String imageToBase64(String imagePath) throws IOException {
11 File file = new File(imagePath);
12 byte[] fileContent = Files.readAllBytes(file.toPath());
13 String extension = imagePath.substring(imagePath.lastIndexOf(".") + 1);
14 String base64String = Base64.getEncoder().encodeToString(fileContent);
15
16 return "data:image/" + extension + ";base64," + base64String;
17 }
18
19 // base64を画像に変換して保存
20 public static void base64ToImage(String base64String, String outputPath) throws IOException {
21 // プレフィックスが含まれている場合は削除
22 if (base64String.contains(",")) {
23 base64String = base64String.split(",")[1];
24 }
25
26 byte[] decodedBytes = Base64.getDecoder().decode(base64String);
27
28 try (FileOutputStream fos = new FileOutputStream(outputPath)) {
29 fos.write(decodedBytes);
30 }
31 }
32
33 public static void main(String[] args) throws IOException {
34 String base64Image = imageToBase64("input.jpg");
35 System.out.println(base64Image.substring(0, 50) + "..."); // 文字列の先頭を表示
36
37 base64ToImage(base64Image, "output.jpg");
38 }
39}
40
1using System;
2using System.IO;
3using System.Text.RegularExpressions;
4
5class Base64ImageConverter
6{
7 // 画像ファイルをbase64に変換
8 public static string ImageToBase64(string imagePath)
9 {
10 byte[] imageBytes = File.ReadAllBytes(imagePath);
11 string base64String = Convert.ToBase64String(imageBytes);
12
13 string extension = Path.GetExtension(imagePath).TrimStart('.').ToLower();
14 return $"data:image/{extension};base64,{base64String}";
15 }
16
17 // base64を画像に変換して保存
18 public static void Base64ToImage(string base64String, string outputPath)
19 {
20 // プレフィックスが含まれている場合は削除
21 if (base64String.Contains(","))
22 {
23 base64String = base64String.Split(',')[1];
24 }
25
26 byte[] imageBytes = Convert.FromBase64String(base64String);
27 File.WriteAllBytes(outputPath, imageBytes);
28 }
29
30 static void Main()
31 {
32 string base64Image = ImageToBase64("input.jpg");
33 Console.WriteLine(base64Image.Substring(0, 50) + "..."); // 文字列の先頭を表示
34
35 Base64ToImage(base64Image, "output.jpg");
36 }
37}
38
1require 'base64'
2
3# 画像ファイルをbase64に変換
4def image_to_base64(image_path)
5 extension = File.extname(image_path).delete('.')
6 base64_data = Base64.strict_encode64(File.read(image_path))
7 "data:image/#{extension};base64,#{base64_data}"
8end
9
10# base64を画像に変換して保存
11def base64_to_image(base64_string, output_path)
12 # プレフィックスが含まれている場合は削除
13 if base64_string.include?(',')
14 base64_string = base64_string.split(',')[1]
15 end
16
17 File.open(output_path, 'wb') do |file|
18 file.write(Base64.decode64(base64_string))
19 end
20end
21
22# 使用例
23base64_image = image_to_base64('input.jpg')
24puts base64_image[0, 50] + '...' # 文字列の先頭を表示
25
26base64_to_image(base64_image, 'output.jpg')
27
1' Excel VBA関数:ファイルをbase64にエンコード
2Function FileToBase64(filePath As String) As String
3 Dim fileNum As Integer
4 Dim fileData() As Byte
5 Dim objXML As Object
6 Dim objNode As Object
7
8 fileNum = FreeFile
9 Open filePath For Binary Access Read As fileNum
10 ReDim fileData(LOF(fileNum) - 1)
11 Get fileNum, , fileData
12 Close fileNum
13
14 Set objXML = CreateObject("MSXML2.DOMDocument")
15 Set objNode = objXML.createElement("b64")
16
17 objNode.DataType = "bin.base64"
18 objNode.nodeTypedValue = fileData
19
20 FileToBase64 = objNode.Text
21
22 Set objNode = Nothing
23 Set objXML = Nothing
24End Function
25
26' Excelでの使用:
27' =FileToBase64("C:\path\to\image.jpg")
28
HTML実装
以下は、HTMLにbase64画像を直接埋め込む方法です:
1<!-- HTMLにbase64画像を直接埋め込む -->
2<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Base64エンコードされた画像">
3
4<!-- base64背景画像を使用したCSS -->
5<style>
6.base64-bg {
7 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');
8 width: 100px;
9 height: 100px;
10}
11</style>
12<div class="base64-bg"></div>
13
歴史
Base64エンコーディングは、1970年代の電子メールシステムの開発にそのルーツがあります。これは、バイナリデータをASCIIテキストのみを処理するシステムを通じて送信するという問題を解決するために設計されました。
エンコーディングスキームは1987年にRFC 989の発表により正式化され、プライバシー強化メール(PEM)標準が定義されました。これは後にRFC 1421およびその他の関連標準で更新されました。「base64」という用語自体は、エンコーディングがバイナリデータを表現するために64の異なるASCII文字を使用することに由来しています。
Web開発の文脈では、base64エンコードされた画像は、データURIの登場とともに人気を博しました。これは1998年にRFC 2397で最初に提案され、バイナリデータをHTML、CSS、その他のWebドキュメントに直接含めることを可能にしました。
Web開発におけるbase64エンコードされた画像の使用は、特にHTTPリクエストを削減し、ページの読み込み時間を改善しようとする開発者によって2000年代中頃に広まりました。この手法は、モバイルWeb開発の台頭に伴い、遅いモバイル接続でのパフォーマンスが重要であるため、特に受け入れられました。
今日、base64エンコーディングはWeb開発において重要なツールのままですが、その使用はよりターゲットを絞ったものになっています。現代のアプローチでは、base64エンコーディングは通常、小さな重要な画像に対して選択的に使用される一方で、より効率的な配信方法(HTTP/2など)が大きな資産に対して利用されています。
参考文献
フィードバック
フィードバックトーストをクリックして、このツールについてのフィードバックを始めてください