如何将html页面转换为图像文件?

时间:2014-02-05 11:27:05

标签: c# html asp.net

我想将Html页面转换为图像文件。为此,我使用了代码

我的代码:

protected void Button1_Click(object sender, EventArgs e)
{

    saveURLToImage("http://cg.nic.in/mahasamund/home.htm");

}
private void saveURLToImage(string url)
{
    if (!string.IsNullOrEmpty(url))
    {
        string content = "";

        System.Net.WebRequest webRequest = WebRequest.Create(url);
        System.Net.WebResponse webResponse = webRequest.GetResponse();
        System.IO.StreamReader sr = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"));
        content = sr.ReadToEnd();
        //save to file
        System.Windows.Forms.MessageBox.Show(content);
        byte[] b = Convert.FromBase64String(content);
        System.IO.MemoryStream ms = new System.IO.MemoryStream(b);
        System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
        img.Save(@"d:\pic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

        img.Dispose();
        ms.Close();
    }
}

当我运行此代码并单击按钮然后发生错误,即

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

有什么问题? 我该怎么做?

3 个答案:

答案 0 :(得分:0)

您的字符串中可能包含“\ 0”字符,并且该字符不是有效的base64字符。

我会尝试使用:

content.Trim("\0");

转换为base64之前

答案 1 :(得分:0)

byte[] b = Convert.FromBase64String(content);

您的内容似乎包含非法的内容。 (也许有些标签) 在传递给FromBase64String方法之前尝试对其进行编码。

答案 2 :(得分:0)

这是错的,你试图将纯HTML文本作为图像数据加载,为什么你认为它会被渲染为图像?

查找WebBrowser.DrawToBitmap,例如:

Perform screen-scape of Webbrowser control in thread