public static unsafe byte[] ConvertTo8Byte(Bitmap img)
{
byte[] result = new byte[img.Width * img.Height];
int n = 0;
BitmapData data = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.ReadOnly,
PixelFormat.Format24bppRgb);
var bp = (byte*)data.Scan0.ToPointer();
for (int i = 0; i != data.Height; i++)
{
for (int j = 0; j != data.Width; j++)
{
result[n] = bp[i * data.Stride + j * 3];
n++;
//0.3R+0.59G+0.11B
float value = 0.11F * bp[i * data.Stride + j * 3] + 0.59F * bp[i * data.Stride + j * 3 + 1] +
0.3F * bp[i * data.Stride + j * 3 + 2];
}
}
img.UnlockBits(data);
//img.Dispose();
return result;
// ColorPalette palette = bit.Palette;
//for (int i = 0; i != palette.Entries.Length; i++)
//{
// palette.Entries[i] = Color.FromArgb(i, i, i);
//}
//bit.Palette = palette;
//bit.Save(destFile, ImageFormat.Bmp);
//img.Dispose();
//bit.Dispose();
}