2011-08-01 18 views
1

元々はインデックス付きの8bpp 256色ファイルだった画像用のビューアを作成しました。私は最初にそのカラーパレットを読んでいます。その後、256バイトのカラーパレットのカラーを参照するイメージバイト自体が読み込まれています。8bppの画像が暗すぎる

このデータを使用して、ビットマップ(32 bppですが、すべての種類の16bppも試しました)を作成し、各ピクセルをSetPixelで設定します。

結果は正しい画像ですが、色が濃すぎます。

これはなぜ起こっているのでしょうか? PixelFormatに問題があると思いますが、どうすれば修正できますか?

+1

パレット色はおそらくガンマカーブを想定していましたか? –

+0

パスカルのプログラムを.NETに翻訳しているので、私はそう言っていません。元のプログラムは、それ以上の調整なしに、適切な色の画像を表示します –

答えて

1

元の色のバイト値を新しいストレージサイズに拡大縮小しないような音がします。 16/32ビット環境で8ビット値を真っ直ぐに使用すると、その値が255以下であるため、画像は非常に暗くなりますが、16または32ビットの値はかなり大きくなります。

+0

これは、16bppフォーマットを使用すると少し明るいため、理にかなっています。どのようにスケールすることができますか? –

+0

SetPixel(int、int、Color)を使用している場合でも、R、G、Bの値は最大255までです。そうしないと、実行時エラーが発生します。 –

+0

解決しました。 誰かが私に指摘したように、問題はVGAパレット上で最大18ビット/色(チャンネルあたり6ビット)でした。だから私は4を掛けて、良い近似を得ました。 ありがとう! PD。これを自己回答として投稿できません...コメントとして投稿してください。 –

関連する問題