Конвертировать скриншот awesomium в поток - PullRequest
0 голосов
/ 07 августа 2011

Вот как я делаю снимок экрана awesomium:

webView2.Render().SaveToPng("filePath");

Проблема в том, что мне теперь нужно не сохранять байты в файл, а получать их в память.Как мне этого добиться?

Ответы [ 2 ]

4 голосов
/ 07 августа 2011

В документации говорится, что Render () возвращает экземпляр RenderBuffer , который имеет свойство с именем Buffer , которое возвращает необработанные данные пикселей (как IntPtr * 1006). *). Если вам все еще нужен байтовый массив, вы можете использовать Marshal.Copy , чтобы скопировать данные в байтовый массив. Таким образом, вы можете сделать это без необходимости временного файла.

2 голосов
/ 07 августа 2011

Похоже, что API не обеспечивает перегрузки, которая принимает поток, но вы всегда можете сохранить во временный файл и загрузить файл в MemoryStream:

string fileName = Path.GetTempFileName();
webView2.Render().SaveToPng(fileName);
byte[] bytes = File.ReadAllBytes(fileName);
File.Delete(fileName);
MemoryStream ms = new MemoryStream(bytes);
...