C#: 비트 맵 바이트 배열을 JPEG 형식으로 변환하는 방법은 무엇입니까?
문제
.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;
}
}
제휴하지 않습니다 StackOverflow