如何解决使用puppeteersharp返回Image base 64,而不将文件保存在硬盘中
我正在使用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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。