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

Saad Aslam 2023年10月12日
  1. バイト配列の概要
  2. C#Memory Stream を使用してイメージをバイト配列に変換する
  3. C#ImageConverter を使用して画像をバイト配列に変換する
  4. 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 と呼ばれる引数を呼び出し、それを返します。

著者: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

関連記事 - Csharp Array