如何将24位颜色System.Drawing.Bitmap
转换为索引(256色)格式?我在弄清楚如何计算调色板时遇到了麻烦。我可以遍历像素并使用int[]
来包含各种颜色,但是当颜色超过256种时会出现问题。有没有办法转换为索引格式并从Bitmap
中提取256色调色板?
答案 0 :(得分:4)
使用位图克隆方法,您可以直接将源图像转换为256色调色板索引图像,如下所示:
Bitmap Result = Source.Clone(new Rectangle(0, 0, Source.Width, Source.Height), PixelFormat.Format8bppIndexed);
然后,如果要访问调色板颜色,只需使用Result.Palette.Entries
属性。
答案 1 :(得分:1)
我之前遇到了同样的挑战。可以在.Net中使用GDI +来解决。
这篇文章给了我很多帮助(包括样本):http://msdn.microsoft.com/en-us/library/Aa479306
为了获得最佳质量,请使用“基于八叉树的量化”。
答案 2 :(得分:0)
这不是内置的,但你可以使用外部.NET库或者控制台来调用ImageMagic。
答案 3 :(得分:0)
一些阅读材料可以帮助您入门。
Graphic Gems I pp.287-293,“一种简单的颜色量化方法:八叉树量化”
B中。库尔兹。彩色显示器的最佳颜色量化。 IEEE计算机视觉与模式识别会议论文集,1983年,第217-224页。
Graphic Gems II pp.116-125,“高效反色彩图计算”
本文描述了一种有效的技术,可将实际颜色映射到缩小的颜色图,并通过其他论文中描述的其他技术进行选择。
Graphic Gems II pp.126-133,“用于优化颜色量化的高效统计计算”
吴小林。动态规划和主成分分析的颜色量化。 ACM Transactions on Graphics,Vol。 1992年10月11日第4号,第348-372页。
答案 4 :(得分:0)
WPF可以访问Windows Imaging Component,您可以使用FormatConvertedBitmap将图像转换为新的像素格式。 WIC比Vista和7上的System.Drawing方法快得多,并且可以为您提供更多选择。