gpt4 book ai didi

c# - 在没有第三方组件的情况下将 ASP.NET MVC ViewResult HTML 呈现为图像

转载 作者:行者123 更新时间:2023-11-30 14:01:19 24 4
gpt4 key购买 nike

有没有办法将 ViewResult 或 PartialViewResult 渲染为图像?

我试图将 ViewResult 获取为字符串,但我得到了一个包含 html 的字符串,但我需要将该 html 渲染为图像。如果可能 - 使用样式和图像。

我有一个想法,即在服务器上获取此 html 的一些浏览器输出并将结果捕获到图像中,但我目前不知道如何在实践中完成。如果您有任何想法,请提供帮助。

请不要推荐任何第三方组件。只需告诉它是否不可能通过标准 .NET 类来完成。

谢谢

最佳答案

参见 How to render an image using the WebBrowser control

public class HtmlToBitmapConverter 
{
private const int SleepTimeMiliseconds = 5000;

public Bitmap Render(string html, Size size)
{
var browser = CreateBrowser(size);

browser.Navigate("about:blank");
browser.Document.Write(html);

return GetBitmapFromControl(browser, size);
}

public Bitmap Render(Uri uri, Size size)
{
var browser = CreateBrowser(size);

NavigateAndWaitForLoad(browser, uri, 0);

return GetBitmapFromControl(browser, size);
}

public void NavigateAndWaitForLoad(WebBrowser browser, Uri uri, int waitTime)
{
browser.Navigate(uri);
var count = 0;

while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Thread.Sleep(SleepTimeMiliseconds);

Application.DoEvents();
count++;

if (count > waitTime / SleepTimeMiliseconds)
{
break;
}
}
}

private WebBrowser CreateBrowser(Size size)
{
return
new WebBrowser
{
ScrollBarsEnabled = false,
ScriptErrorsSuppressed = true,
Size = size
};
}

private Bitmap GetBitmapFromControl(WebBrowser browser, Size size)
{
var bitmap = new Bitmap(size.Width, size.Height);

NativeMethods.GetImage(browser.Document.DomDocument, bitmap, Color.White);
return bitmap;
}
}

那就很简单了

var image = new HtmlToBitmapConverter()
.Render(new Uri(urlTextBox.Text), pictureBox.Size);

关于c# - 在没有第三方组件的情况下将 ASP.NET MVC ViewResult HTML 呈现为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com