Как я могу преобразовать 8-битное изображение в градациях серого в массив byte [] в C #? - PullRequest
1 голос
/ 11 февраля 2011

Как я могу поместить данные 8-битного изображения в градациях серого в байтовый массив?Я пробовал следующий код:

private byte[] loadBitmap(string filename, int width, int height)
{
    byte[] data = new byte[width * height];
    BitmapData bmpData = null;
    Bitmap slice = new Bitmap(filename);
    Rectangle rect = new Rectangle(0, 0, slice.Width, slice.Height);
    bmpData = slice.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
    int size = bmpData.Height * bmpData.Stride;
    System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, data, 0, size);
    slice.UnlockBits(bmpData);
    return data;
}

Но результат массива данных имеет некоторые ошибки из-за Format8bppIndexed.Есть идеи?

1 Ответ

0 голосов
/ 11 февраля 2011

Не знаю, поможет ли это вам, но я попробую.

byte[] buffer = null;
System.Drawing.Image newImg = img.GetThumbnailImage(width, height, null, new System.IntPtr());
using (MemoryStream ms = new MemoryStream()) {
    newImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
}
buffer = ms.ToArray();

Это просто способ того, что я уже сделал.

Надеюсь, это поможет

...