从图像文件加载BitmapPalette的问题

时间:2012-06-17 09:45:29

标签: c#

我想从我创建的位图文件加载调色板。该文件宽256像素,高1像素。

我用

BitmapImage image = new BitmapImage();
image.BeginInit();           
image.UriSource = new Uri("image.bmp", UriKind.RelativeOrAbsolute);
image.EndInit();

myPalette = new BitmapPalette(image, 256);

奇怪的是,Count的{​​{1}}属性只有244个!

我的代码有问题吗?

1 个答案:

答案 0 :(得分:1)

您的代码没有任何问题 - BitmapPalette返回最多指定的颜色数。从这里开始:http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmappalette.aspx

  

基于的初始化BitmapPalette类的新实例   指定了BitmapSource。新的BitmapPalette仅限于a   指定的最大颜色数。

我创建了一个具有相同尺寸和单一颜色的测试位图,myPalette.Colors.Count返回了1。

但是请注意,您实际上可能希望使用Bitmap中的System.Drawing,这更简单,即使它们完全相同,也会返回完整的调色板列表(256):

var test = new Bitmap("image.bmp");    
Console.WriteLine(test.Palette.Entries.Length);

使用与上面相同的测试,返回256个条目