C#에서 이미지를 바이트 배열로 변환

Saad Aslam 2023년10월12일
  1. 바이트 배열 개요
  2. 메모리 스트림을 사용하여 C#에서 이미지를 바이트 배열로 변환
  3. ImageConverter를 사용하여 C#에서 이미지를 바이트 배열로 변환
  4. C#에서 바이트 배열을 이미지로 변환
C#에서 이미지를 바이트 배열로 변환

이 튜토리얼에서는 Memory StreamImage Converter 클래스를 사용하여 이미지를 바이트 배열로 변환하는 방법을 알려줍니다. 또한 C# 바이트 배열을 이미지로 변환하는 프로세스를 더 잘 이해할 수 있습니다.

바이트 배열 개요

이진 데이터 모음은 종종 바이트 배열인 바이트 배열로 알려진 형식으로 저장됩니다. 예를 들어, 그림의 각 픽셀에 대한 정보는 이미지를 구성하는 바이트 배열 내부에 저장됩니다.

바이트 배열에서 모든 파일 내용의 이진 표현을 저장할 수 있습니다. 같은 방식으로 일반 배열을 바이트로 초기화합니다. 바이트로 바이트 배열을 초기화할 수도 있습니다.

메모리 스트림을 사용하여 C#에서 이미지를 바이트 배열로 변환

.NET Framework는 다양한 이미지 형식을 지원합니다. Picture 개체에는 개발자가 이미지를 이러한 형식으로 파일에 저장할 수 있는 저장 메서드가 있습니다.

암호:

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() 메서드는 항목을 빠르고 효율적으로 바이트 배열로 변환할 수 있습니다.

ImageConverter를 사용하여 C#에서 이미지를 바이트 배열로 변환

암호:

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 문이 포함되어 있습니다. 그런 다음 mStream이라는 인수를 호출하고 반환하는 .FromStream() 메서드의 도움으로 바이트를 이미지로 변환합니다.

작가: 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