【C#.NET解説】型変換の神「Convert」第2回 png画像をbase64化

2024年12月1日日曜日

ファイル操作 型変換

t f B! P L

名前空間 System

Convert

自己紹介

私はConvert、.NETの万能で狡猾な変換マスター。データ型の世界を自在に操り、真実と偽りの狭間で踊る悪戯好きの神だ。
Convertクラス

今日、君たちに披露するのは、「Convert」クラスを使ってPNG画像をbase64形式にエンコードする魔法のような技だ。この技を使いこなせば、データの扱い方に対する視点が広がるだろう。それじゃあ始めるぞ。

基本機能

さて、base64というのはデータを文字列として扱えるように変換する方法だ。PNG画像などのバイナリデータをbase64に変換すると、テキストとして通信や保存に便利になる。ただし、この技には注意が必要だ。例えば、base64エンコードにはデータサイズが33%増えるというデメリットがある。

まずは、PNG画像をbase64形式にエンコードする簡単なコード例を見てみよう。

C#

// PNG画像をbase64文字列に変換する例
string filePath = "/path/sample.png";
byte[] imageBytes = File.ReadAllBytes(filePath); // PNGファイルをバイト配列に読み込む
string base64String = Convert.ToBase64String(imageBytes); // バイト配列をbase64文字列に変換
Console.WriteLine(base64String); // 結果を出力

どうだい?たった数行で、PNGファイルをbase64形式の文字列に変換できるだろう。

base64化した画像をファイルに書き出す方法と読み込む方法

さて、次はbase64文字列を元のPNGファイルに戻す技と、変換結果をUI上で表示する方法だ。ここでは、ボタン2つとPictureBox1つをフォームに配置していると仮定する。

最初のボタンで画像をbase64形式に変換し、もう一つのボタンでその文字列を元に画像ファイルを生成し、PictureBoxに表示する。

C#


using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    // ボタン1: PNGをbase64に変換
    private void button1_Click(object sender, EventArgs e)
    {
        string filePath = "sample.png";
        byte[] imageBytes = File.ReadAllBytes(filePath); // PNGファイルをバイト配列に読み込む
        string base64String = Convert.ToBase64String(imageBytes); // バイト配列をbase64文字列に変換
        File.WriteAllText("encode.txt", base64String); // base64文字列をテキストファイルに保存
        MessageBox.Show("画像をbase64形式に変換して保存しました!");
    }
    
    // ボタン2: base64をPNGに変換して表示
    private void button2_Click(object sender, EventArgs e)
    {
        string base64String = File.ReadAllText("encode.txt"); // base64文字列を読み込む
   
        // Base64文字列をバイト配列に変換 
        byte[] imageBytes = Convert.FromBase64String(base64String);
        // バイト配列をImageオブジェクトに変換 
        using (MemoryStream ms = new MemoryStream(imageBytes))
        { 
            pictureBox1.Image =System.Drawing.Image.FromStream(ms);
        }
    }
}


これで、画像データを安全に保存・復元しつつ、UIで結果を確認することができる。君もこの技を応用して、さらに便利なプログラムを作ってみてくれ。

このブログを検索

QooQ