awesomiumのスクリーンショットを作成する方法は次のとおりです。
webView2.Render().SaveToPng("filePath");
問題は、バイトをファイルに保存する必要はなく、メモリ内に取得する必要があることです。どうすればそれを達成できますか?
ドキュメントには、Render() が RenderBuffer のインスタンスを返し、これにはBufferというプロパティがあり、生のピクセル データを ( IntPtrとして) 返すと記載されています。それでもバイト配列が必要な場合は、Marshal.Copyを使用してデータをバイト配列にコピーできます。このようにして、一時ファイルを必要とせずにそれを行うことができます。
API は、ストリームを受け取るオーバーロードを提供していないようですが、いつでも一時ファイルに保存して、ファイルを次のようにロードできますMemoryStream
。
string fileName = Path.GetTempFileName();
webView2.Render().SaveToPng(fileName);
byte[] bytes = File.ReadAllBytes(fileName);
File.Delete(fileName);
MemoryStream ms = new MemoryStream(bytes);