LabColor RgbToLab(PaletteEntry cur) { LabColor lab = RgbToLab(cur.R, cur.G, cur.B); lab.Block = cur.Raw; return(lab); }
public byte BestMatch(byte R, byte G, byte B, out int position) { int minimum = int.MaxValue; position = 0; for (int i = 0; i < palette.Length; i++) { PaletteEntry pixel = palette[i]; int dist = (R - pixel.R) * (R - pixel.R) + (G - pixel.G) * (G - pixel.G) + (B - pixel.B) * (B - pixel.B); if (dist < minimum) { minimum = dist; position = i; } } return(palette[position].Block); }
static int MinDist(byte R, byte G, byte B, PaletteEntry[] entries, out int pos) { int minDist = int.MaxValue; pos = 0; for (int i = 0; i < entries.Length; i++) { PaletteEntry entry = entries[i]; int dist = (R - entry.R) * (R - entry.R) + (G - entry.G) * (G - entry.G) + (B - entry.B) * (B - entry.B); if (dist < minDist) { minDist = dist; pos = i; } } return(minDist); }