Как получить пиксельные данные из SoftwareBitmap в UWP C #? - PullRequest
0 голосов
/ 16 мая 2019

Привет, я занимаюсь разработкой утилиты совместного использования экрана в проекте UWP C #.Я реализовал весь код по ссылке ниже.

Ссылка: https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/screen-capture

Теперь проблема в том, как получить данные пикселей из захваченного кадра.Я могу преобразовать захваченный кадр в два объекта.

Нужно ли выполнять кодирование, декодирование или обе операции, чтобы получить данные пикселей?

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете получить экземпляр CanvasBitmap, вызвав CanvasBitmap.CreateFromDirect3D11Surface .Вызов метода GetPixelBytes в этом экземпляре возвращает данные пикселей растрового изображения в виде байтового массива.

using (var frame = _framePool.TryGetNextFrame())  {
  using (var canvasBitmap = CanvasBitmap.CreateFromDirect3D11Surface(_canvasDevice, frame.Surface)) {
      bytes[] pixelData = canvasBitmap.GetPixelBytes();
  }
}  

Нужно ли выполнять кодирование или декодирование или обе операции, прежде чемполучить данные пикселей?

Возвращенные данные должны быть в том же формате пикселей, который вы указали при создании пула кадров:

_framePool = Direct3D11CaptureFramePool.Create( 
    _canvasDevice, // D3D device 
    DirectXPixelFormat.B8G8R8A8UIntNormalized, // Pixel format 
    2, // Number of frames 
    _item.Size); // Size of the buffers  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...