본문 바로가기

c#/.net

C# Parameter is not valid 에러 비트맵 Graphics 에러

c# bitmap class를 사용하다가 Parameter is not valid 라는 에러가 발생 하였습니다.

처음에는 단순한 메모리 문제인줄 알았으나 특정 이미지만 문제가 발생하여 알아보던 중 답을 발견 하였습니다.

이미지 파일에는 2가지 색상형식이 존재합니다.

바로 위처럼 3원색인 RGB와 청록 자홍 노란색을 혼합하여 만들어내는 CMYK 입니다.

제가 개발하는 환경에서 아무런 문제없이 Bitmap객체가 생성되는 이미지는 전부 RGB였고 문제가 있던 이미지의 형식은 CMYK였습니다.

그래서 c# bitmap 클래스에서는 RGB형식의 이미지만 생성이 가능한것인지 알아보려 했지만 제대로 된 답을 찾기는 어려워서 우선은 cmyk이미지이면 PixelFormat이 8207로 떨어지는 것을 확인하여 PixcelFormat의 형식을 RGB 형식픽셀 포맷인 24bppRGb로 변경하였더니 문제없이 해결 되었습니다.

if (image.PixelFormat.ToString() == "8207")
{
    using (Bitmap bitmap = new Bitmap(image))
    {
        RectangleF cloneRect = new RectangleF(0, 0, bitmap.Width, bitmap.Height);
        System.Drawing.Imaging.PixelFormat format = System.Drawing.Imaging.PixelFormat.Format24bppRgb;
        return bitmap.Clone(cloneRect, format);
    }
}

 

c#에서 지원을 안해주는 것인지는 확실하지는 않지만 위처럼 사용하면 문제는 해결될듯 합니다.