원본 bpp (1 - BnW의 경우, 8 - 회색의 경우, 24- 색)로 이미지를 처리하고 저장해야합니다. 처리 후 나는 항상 24bpp (Aforge.Net로 처리하기 때문에)가 있습니다. 내가 저장 기능에 원래 BPP를 통과하고 내가 절약을 위해 다음 코드를 사용하고 있습니다 :C# Bitmap.Save가 Bitmap의 PixelFormat을 무시하는 이유는 무엇입니까?
private static Bitmap changePixelFormat(Bitmap input, PixelFormat format)
{
Bitmap retval = new Bitmap(input.Width, input.Height, format);
retval.SetResolution(input.HorizontalResolution, input.VerticalResolution);
Graphics g = Graphics.FromImage(retval);
g.DrawImage(input, 0, 0);
g.Dispose();
return retval;
}
내가 전달하는 경우 : "그래픽 개체를 만들 수 없습니다 :
PixelFormat.Format8bppIndexed
내가 예외를 받고 있어요
Bitmap s = new Bitmap("gray.jpg");
Bitmap NewPicture = s.Clone(new Rectangle(0, 0, s.Width, s.Height), PixelFormat.Format8bppIndexed);
: 나는 다음 코드를 시도했습니다
Graphics g = Graphics.FromImage(retval);
: 라인의 인덱스 픽셀 형식 "의 이미지 이 "NewImage"후
PixelFormat 8bppIndexed가있다,하지만 난 NewImage 저장있을 때 :
NewPicture.Save("hello.jpg", ImageFormat.Jpeg);
hello.jpg는 24bpp있다.
나는 원본 이미지의 BPP 및 이미지 형식을 유지해야합니다.
왜 Bitmap.Save는 비트 맵의 PixelFormat을 무시?
============================================== =========
고마워, 내가 해결책을 발견했습니다 8 비트 그레이 스케일로 이미지 (특히 JPEG)를 저장할 수있다이 무료 라이브러리의 도움으로 http://freeimage.sourceforge.net/license.html
.
그래서 무엇이 문제입니까? 'Bitmap.Save'가 저장되는 이미지의'PixelFormat'을 무시하는 이유는 무엇입니까? 또는 인덱스 된 픽셀 형식의'Graphics.FromImage'에 의해 던져진 예외를 어떻게 해결할 수 있습니까? –
죄송합니다. 질문을 추가하지 않았습니다. 문제는 "Bitmap.Save가 Bitmap의 PixelFormat을 무시하는 이유"입니다. – ieaglle
8 비트 색인을 원하면 GIF로 저장해야합니다. – leppie