问题描述
我正在使用puppeteersharp将HTML转换为图像:
https://www.puppeteersharp.com/examples/index.html
这将获取HTMl并保存图像,然后我将返回base64图像,我希望返回图像base64,而不将其保存在硬盘驱动器中。
这是代码:
await new browserFetcher().DownloadAsync(browserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
});
var page = await browser.NewPageAsync();
await page.SetViewportAsync(new ViewPortOptions
{
Width = 750,Height = 750,});
await page.SetContentAsync("<h2>Test</h2>");
await page.ScreenshotAsync(@"/Users/myname/Documents/puppeteertests/test1.jpg");
byte[] b = System.IO.File.ReadAllBytes(@"/Users/myname/Documents/puppeteertests/test1.jpg");
return Convert.ToBase64String(b);
解决方法
我在想类似的事情可能应该起作用- 它使用页面的“ ScreenshotStreamAsync”方法返回的Stream并将其复制到MemoryStream,以便我们可以真正简单地从中获取字节数组并将该字节数组传递给Convert.ToBase64String
var thing = await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = false
});
var page = await browser.NewPageAsync();
await page.SetViewportAsync(new ViewPortOptions
{
Width = 750,Height = 750,});
await page.SetContentAsync("<h2>Test</h2>");
await page.ScreenshotAsync(@"test1.jpg");
using (var memStream = new MemoryStream())
{
page.ScreenshotStreamAsync().Result.CopyTo(memStream);
var mything = Convert.ToBase64String(memStream.ToArray());
Console.WriteLine(mything);
}