HOWTO · Csharp

C# でイメージをバイト配列に変換する

この記事では、C# で画像をバイト配列に変換する方法を学習します。

このページの内容

このチュートリアルでは、Memory Stream クラスと Image Converter クラスを使用して画像をバイト配列に変換する方法を説明します。 さらに、バイトの C# 配列をイメージに変換するプロセスをよりよく理解できるようになります。

バイト配列の概要

バイナリ データのコレクションは、多くの場合、バイトの配列であるバイト配列と呼ばれる形式で格納されます。 たとえば、画像の各ピクセルに関する情報は、画像を構成するバイト配列内に格納されます。

バイト配列では、任意のファイルの内容のバイナリ表現を保存できます。 同様に、通常の配列をバイトで初期化します。 バイト配列をバイトで初期化することもできます。

C#Memory Stream を使用してイメージをバイト配列に変換する

.NET Framework は、さまざまな画像形式をサポートしています。 Picture オブジェクトには、開発者がこれらの形式のいずれかで画像をファイルに保存できる save メソッドがあります。

コード:

public byte[] imgToByteArray(Image img) {
  using (MemoryStream mStream = new MemoryStream()) {
    img.Save(mStream, img.RawFormat);
    return mStream.ToArray();
  }
}

上記の例では、Image 型の img 入力を引数として受け入れる imgToByteArray という関数を記述します。 このメソッドの using 行内で、MemoryStream() クラスのインスタンスを作成します。

次に、画像フォーマットが指定されている間、このインスタンス中に MemoryStream オブジェクトに Save() 関数を適用します。 アイテムが既にメモリに保存されているので、MemoryStream オブジェクトで利用可能な ToArray() メソッドは、アイテムをすばやく効率的にバイト配列に変換できます。

C#ImageConverter を使用して画像をバイト配列に変換する

コード:

public static byte[] imgToByteConverter(Image inImg) {
  ImageConverter imgCon = new ImageConverter();
  return (byte[])imgCon.ConvertTo(inImg, typeof(byte[]));
}

imgToByteConverter() という関数を作成しました。 inImg という名前の入力を取り、そのパラメーターとして型 Image を持ちます。

このメソッド内で、ImageConverter() クラスのインスタンスを作成します。 .ConvertTo() メソッドを使用して送信された画像を変換した後、この関数は元の形式に変換されたバイトを返します。

C#でバイト配列を画像に変換する

画像をバイト配列に変換することは、私たちがよく知っていることです。 バイト配列がロードされたので、それを画像に変換する関数を見て、コードで画像を利用できるようにします。

コード:

public Image byteArrayToImage(byte[] byteArrayIn) {
  using (MemoryStream mStream = new MemoryStream(byteArrayIn)) {
    return Image.FromStream(mStream);
  }
}

byteArrayToImage() という関数が作成されます。 これは byteArrayIn という名前の入力を取り、そのパラメーターとして型 byte[] を持ちます。

このメソッドには、byteArrayIn 変数に格納されたバイトを提供することによって、MemoryStream クラスのインスタンスを初期化する using ステートメントが含まれています。 次に、バイトは、.FromStream() メソッドの助けを借りて画像に変換されます。このメソッドは、mStream と呼ばれる引数を呼び出し、それを返します。