将图像深度限制为特定集

时间:2013-07-21 11:03:32

标签: c# .net image-processing colors

我想将图像转换为特定的预定图像集。尽管经过多次尝试,我仍然在最终图像中获得颜色,这些颜色不在我提供的调色板中。我正在使用下面的代码并用我的颜色填充availableColors

private static Image GetImageInPalette(string imagePath, List<System.Windows.Media.Color> availableColors) {

        BitmapImage bmpSource = new BitmapImage(new Uri(imagePath));
        BitmapPalette colorPalette = new BitmapPalette(availableColors);
        FormatConvertedBitmap bmpWithPalette = new FormatConvertedBitmap(bmpSource, PixelFormats.Indexed8, colorPalette, 0);

        var encoder = new BmpBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(bmpWithPalette));
        Image destinationImage;
        using (var ms = new MemoryStream()) {
            encoder.Save(ms);
            destinationImage = Image.FromStream(ms);
        }
        return destinationImage;
    }

好像图像仍在使用最近邻居的某种变体。

0 个答案:

没有答案