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