C #: первые 8 байтов, скопированных CopyPixels, содержат заголовок? - PullRequest
0 голосов
/ 28 ноября 2010

Я использую метод CopyPixels для BitMapImage (C #) и хочу получить необработанные данные пикселей. Однако, когда я проверяю необработанный буфер в отладчике, я вижу, что первые 8 байтов всегда (Шест)

67174944 00300000

вот фрагмент кода:

int stride = frm.PixelWidth * frm.Format.BitsPerPixel / 8;
stride = (stride % 4) == 0 ? stride : (stride + 4);
rawPixels = new byte[stride * frm.PixelHeight * frm.Format.BitsPerPixel / 8];
frm.CopyPixels(rawPixels, stride, 0);

Я не могу найти документацию, в которой говорится, что это за заголовок. Интересно, что текстовым эквивалентом 6717 является «DI», что заставило меня подумать, что это как-то связано с заголовком DIB, но я почти уверен, что ошибаюсь. спасибо.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2010

Понятия не имею, что не так с первыми 8 байтами, но некоторые другие замечания:

Расчет шага мне кажется странным.Как насчет

stride = ((stride+3)/4)*4;

Далее, я думаю, размер буфера rawPixels должен выглядеть следующим образом:

rawPixels = new byte[stride * frm.PixelHeight]
0 голосов
/ 28 ноября 2010

Вы смотрите на заголовок объекта массива. Добавьте 8 к адресу, чтобы найти элементы массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...