以下是我制作 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);