加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何将网页转换为图像?

发布时间:2020-12-16 06:43:19 所属栏目:asp.Net 来源:网络整理
导读:我想将* .aspx( HTML)页面(用户界面)转换为JPEG等图像. 我正在使用下面的代码 Protected Sub btnGet_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles btnGet.Click saveURLToImage("http://google.co.in")End SubPrivate Sub saveURLToI
我想将* .aspx( HTML)页面(用户界面)转换为JPEG等图像.
我正在使用下面的代码

Protected Sub btnGet_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles btnGet.Click
        saveURLToImage("http://google.co.in")
End Sub

Private Sub saveURLToImage(ByVal url As String)
        If Not String.IsNullOrEmpty(url) Then
            Dim content As String = ""

            Dim webRequest__1 As System.Net.WebRequest = WebRequest.Create(url)
            Dim webResponse As System.Net.WebResponse = webRequest__1.GetResponse()
            Dim sr As System.IO.StreamReader = New StreamReader(webResponse.GetResponseStream(),System.Text.Encoding.GetEncoding("UTF-8"))
            content = sr.ReadToEnd()
            'save to file
            Dim b As Byte() = Convert.FromBase64String(content)
            Dim ms As New System.IO.MemoryStream(b,b.Length)
            Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(ms)
            img.Save("c:pic.jpg",System.Drawing.Imaging.ImageFormat.Jpeg)

            img.Dispose()
            ms.Close()
        End If
    End Sub

但我得到的错误为“Base-64字符串中的无效字符”
Dim b As Byte()= Convert.FromBase64String(content)

解决方法

您没有使用webRequest获取页面的渲染图像,您只能使用HTML代码.

要生成图像,请遵循以下代码(直接从this post翻录)

public Bitmap GenerateScreenshot(string url)
{
    // This method gets a screenshot of the webpage
    // rendered at its full size (height and width)
    return GenerateScreenshot(url,-1,-1);
}

public Bitmap GenerateScreenshot(string url,int width,int height)
{
    // Load the webpage into a WebBrowser control
    WebBrowser wb = new WebBrowser();
    wb.ScrollBarsEnabled = false;
    wb.ScriptErrorsSuppressed = true;
    wb.Navigate(url);
    while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }


    // Set the size of the WebBrowser control
    wb.Width = width;
    wb.Height = height;

    if (width == -1)
    {
        // Take Screenshot of the web pages full width
        wb.Width = wb.Document.Body.ScrollRectangle.Width;
    }

    if (height == -1)
    {
        // Take Screenshot of the web pages full height
        wb.Height = wb.Document.Body.ScrollRectangle.Height;
    }

    // Get a Bitmap representation of the webpage as it's rendered in the WebBrowser control
    Bitmap bitmap = new Bitmap(wb.Width,wb.Height);
    wb.DrawToBitmap(bitmap,new Rectangle(0,wb.Width,wb.Height));
    wb.Dispose();

    return bitmap;
}

以下是上述方法的一些示例用法:

// Generate screenshot of a webpage at 1024x768 resolution
Bitmap screenshot = GenerateScreenshot("http://pietschsoft.com",1024,768);

// Generate screenshot of a webpage at the webpage's full size (height and width)
screenshot = GenerateScreenshot("http://pietschsoft.com");

// Display screenshot in PictureBox control
pictureBox1.Image = thumbnail;

/*
// Save screenshot to a File
screenshot.Save("screenshot.png",System.Drawing.Imaging.ImageFormat.Png);
*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读