2009-02-25 11 views
0

私は、とりわけPPMイメージフォーマットのために、管理対象C++でインタプリタを書いています。イメージ仕様では、1チャネルにつき1ピクセルあたり最大2バイト、または1ピクセルあたり48ビットのカラーイメージを持つイメージが可能です。私はこのフォーマットを読んで、それを.Netビットマップに変換しようとしていますが、動作させるのに問題があります。私はピクセル画像あたり24ビットを持っているとき、私はそうのようにそれらを初期化し、次のよう48bppビットマップをRGBから初期化する方法は?

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を初期化:

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

しかし、記入しようとしたときに、ピクセルデータでは、R、G、およびBの値が255より大きい 'Color :: FromArgb()'を使用して色値を指定できません。この制限を回避する方法はありますか?

答えて

0

System.Drawingは48および64ビットイメージファイル形式を処理できますが、ピクセル値を24ビットに変換します。私はフルカラーの忠実度を維持する方法がないことを知っています。

の備考欄を参照してください。PixelFormat Enumeration

関連する問題