Tag: 调色板

无法在位图中设置调色板

我一直在写一个PCX解码器,到目前为止,PCX图像本身解析得很好,但我无法弄清楚如何设置位图的调色板。 我创建了一个像这样的位图: Bitmap bmp = new Bitmap(width, height, stride2, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, pixels); 但我似乎无法使用以下方法设置调色板: for (int i = 0; i < 256; i += 3) { Color b = new Color(); b = Color.FromArgb(palette[i], palette[i + 1], palette[i + 2]); bmp.Palette.Entries.SetValue(b, i); } 在这个例子中,我已经读完了pcx文件调色板中的每个字节并将它们存储在palette []中。 从那里,我用它来设置位图调色板中的条目。 如何设置颜色?

如何从图像中生成突出颜色的调色板?

我试图弄清楚如何对图像中的所有像素进行采样并从中生成颜色调色板, 如此或类似。 我不知道从哪里开始。 谁能指出我正确的方向? __EDIT:__ 这就是我到目前为止所得到的: 我使用这个Pixelate函数来获取像joe_coolish建议的大块部分。 它工作得很完美,给我一个非常好的颜色样本(这是来自windows样本果冻鱼图片): 现在,如果有人能帮助我获得5种最鲜明的颜色(最深的蓝色,最浅的蓝色,橙色,灰色和桃色(?)),我会永远爱你。 我真的不明白如何平均或添加颜色。 我也无法弄清楚如何以编程方式判断颜色是否相似,在你的解释中有一些数字和变量让我迷失了,试图找出对谁做什么。

如何仅将8位PNG图像作为8位PNG图像读取?

我有一个8位PNG图像(见附件)。 但是当我使用Image.FromFile方法读取它时,像素格式为32位。 由于这个原因,我无法修改调色板。 请帮我。 请参阅下面的代码,我将用于读取文件和更新调色板。 public static Image GetPreviewImage() { Bitmap updatedImage = null; try { // Reads the colors as a byte array byte[] paletteBytes = FetchColorPallette(); updatedImage = Image.FromFile(@”C:\Screen-SaverBouncing.png”); ColorPalette colorPalette = updatedImage.Palette; int j = 0; if (colorPalette.Entries.Length > 0) { for (int i = 0; i < paletteBytes.Length / 4; i++) […]