2009-02-25 5 views
0

저는 PPM 이미지 형식을 위해 관리되는 C++로 통역사를 씁니다. 이미지 사양은 채널당 픽셀 당 최대 2 바이트 또는 픽셀 색상 이미지 당 48 비트의 이미지를 허용합니다. 이 형식을 읽고 .Net 비트 맵으로 변환하려고 시도 중이지만 작동에 문제가 있습니다. 내가 픽셀 이미지 당 24 비트가있을 때, 난 그렇게처럼 초기화 :RGB에서 48bpp 비트 맵을 초기화하는 방법은 무엇입니까?

bmp = gcnew Bitmap(widht, height, Imaging::PixelFormat::Format48bppRgb); 

을 그러나 기입 할 때, 다음과 같이 픽셀 이미지 당

bmp = gcnew Bitmap(width, height); 
<for each pixel> 
    bmp->SetPixel(x, y, Drawing::Color::FromArgb(Convert::ToInt32(fileData[offset]), 
     Convert::ToInt32(fileData[offset + 1]), 
      Convert::ToInt32(fileData[offset + 2]))); 
    offset += 3; 

48 비트, 내가 BMP를 초기화 픽셀 데이터, R, G 및 B에 대해 255보다 큰 값으로 'Color :: FromArgb()'를 사용하여 색상 값을 지정할 수 없습니다.이 제한을 피할 수있는 방법이 있습니까?

답변

0

System.Drawing은 48 및 64 비트 이미지 파일 형식을 처리 할 수 ​​있지만 픽셀 값을 24 비트로 변환합니다. 전 색 충실도를 유지할 방법이 없다는 것을 알고 있습니다.

설명 부분을 참조하십시오. PixelFormat Enumeration

관련 문제