BitmapSource.CopyPixels - что хорошего для шага? - PullRequest
12 голосов
/ 07 октября 2010

Я пытаюсь получить данные пикселей из объекта WPF BitmapSource.Как я понимаю, это можно сделать, вызвав метод CopyPixels.Этот метод нуждается в параметре шага, который я не знаю, как получить.Насколько я знаю, шаг - это значение, которое используется при переходе в массив во время чтения или копирования.Какое будет подходящее значение шага для любого BitmapSource?

Ответы [ 2 ]

20 голосов
/ 07 октября 2010

Вы можете использовать значение stride = pixel_size * image_width. Например, для растрового изображения RGBA с шириной 100 пикселей штрих = 400.

В некоторых приложениях может потребоваться специальное выравнивание линий. Например, для растровых изображений Windows GDI требуется выравнивание 32-битных строк. В этом случае для растрового изображения RGB с шириной = 33 значение шага 33 * 3 = 99 должно быть изменено на 100, чтобы иметь выравнивание 32-битной строки в массиве назначения.

Как правило, вы должны знать требования к массиву назначения. Там нет особых требований, используйте по умолчанию pixel_size * image_width.

0 голосов
/ 13 февраля 2019
var stride = ((bitmapSource.PixelWidth * bitmapSource.Format.BitsPerPixel + 31) / 32) * 4;

или

var stride = ((bitmapSource.PixelWidth * bitmapSource.Format.BitsPerPixel + 31) >> 5) << 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...