1

既存のビットマップを 256 色のパレットに変換しようとしています。

Web で調査した後、人々は次のように提案します。

Bitmap b1 = new Bitmap(picture);
Bitmap b2 = new Bitmap(b1.Size.Width,
                       b1.Size.Height,
                       System.Drawing.Imaging.PixelFormat.Format8bppIndexed);

デバッグしてエントリ数を確認すると、PixelFormat が 256 に設定されていますが、パレットには 224 エントリしか含まれていません。

4

1 に答える 1

0

どのバージョンを使用していますか?このコードは、Visual Studio 2010(.NET 4.0)を使用してデバッグモードでコンパイルされ、256エントリのパレットを提供します。

private void button1_Click(object sender, EventArgs e)
{
    var b1 = new Bitmap(BITMAP_NAME);
    var b2 = new Bitmap(b1.Width, b1.Height, PixelFormat.Format8bppIndexed);
    int numColors = b2.Palette.Entries.Length;
    MessageBox.Show(String.Format("Palette contains {0} entries", numColors));
    b2.Dispose();
    b1.Dispose();
}
于 2012-10-18T17:58:21.877 に答える