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