public void ImportImageDataAs8Bit(Bitmap bitmap, IPalette palette, bool isBasePalette, out int difference) { difference = 0; if (bitmap == null) { return; } BitsPerPixel = 8; FirstByte = 1; ImageWidth = bitmap.Width; ImageHeight = bitmap.Height; ImageOffset = default; FrameWidth = (byte)bitmap.Width; FrameHeight = (byte)bitmap.Height; ImageHandle = 1; PaletteHandle = isBasePalette ? 0 : 1; Memory = 1; PaletteHandle2 = 1; ImageData = new byte[bitmap.Width * bitmap.Height]; for (int x = 0; x < ImageWidth; x++) { for (int y = 0; y < ImageHeight; y++) { Color pixel = bitmap.GetPixel(x, y); int idata8 = palette.GetClosestIndexFromColor(pixel, out int d); difference += d; byte data8 = (byte)(idata8.Clamp(0, byte.MaxValue)); int pos = x + y * ImageWidth; ImageData[pos] = data8; } } if (!isBasePalette) { Palette.Import(palette); } }