我想将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.
有什么问题? 我该怎么做?
答案 0 :(得分:0)
您的字符串中可能包含“\ 0”字符,并且该字符不是有效的base64字符。
我会尝试使用:
content.Trim("\0");
转换为base64之前
答案 1 :(得分:0)
byte[] b = Convert.FromBase64String(content);
您的内容似乎包含非法的内容。 (也许有些标签) 在传递给FromBase64String方法之前尝试对其进行编码。
答案 2 :(得分:0)
这是错的,你试图将纯HTML文本作为图像数据加载,为什么你认为它会被渲染为图像?
查找WebBrowser.DrawToBitmap
,例如: