C#: 비트 맵 바이트 배열을 JPEG 형식으로 변환하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/457370

  •  19-08-2019
  •  | 
  •  

문제

.NET 2.0을 사용하여 바이트 배열 형식의 비트 맵을 JPEG 형식으로 변환하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

어떤 종류의 byte[] 당신은 의미합니까? 원시 파일 스트림 데이터? 어떤 경우에는 (사용 System.Drawing.dll 클라이언트 응용 프로그램에서) :

    using(Image img = Image.FromFile("foo.bmp"))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }

또는 사용 FromStream a new MemoryStream(arr) 당신이 정말로 가지고 있다면 byte[]:

    byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
    using(Image img = Image.FromStream(new MemoryStream(raw)))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }

다른 팁

원시 픽셀 데이터의 버퍼 일뿐 아니라 완전한 이미지 파일 (JPEG 등 헤더 등 포함)이 아닌 경우 image.fromStream을 사용할 수 없습니다.

당신이 찾고있는 것은 System.Drawing.bitMap.lockbits, System.Drawing.Imaging.Imagedata를 반환하는 것입니다. 이것은 메모리에 대한 포인터를 사용하여 이미지의 픽셀을 읽고 쓰는 데 액세스 할 수 있습니다.

public static Bitmap BytesToBitmap(byte[] byteArray)
{
  using (MemoryStream ms = new MemoryStream(byteArray))
  {
    Bitmap img = (Bitmap)Image.FromStream(ms);
    return img;
  }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top