0

我想将图像转换为特定的预定集。尽管进行了几次尝试,我仍然在最终图像中获得了不在我提供的调色板中的颜色。我正在使用下面的代码并填充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;
    }

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

4

0 回答 0