C# でイメージをバイト配列に変換する
- バイト配列の概要
-
C#
でMemory Stream
を使用してイメージをバイト配列に変換する -
C#
でImageConverter
を使用して画像をバイト配列に変換する -
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
と呼ばれる引数を呼び出し、それを返します。
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