C# 如何在asp.net中将页面转换为图像
我试过这样做C# 如何在asp.net中将页面转换为图像,c#,asp.net,C#,Asp.net,我试过这样做 protected void Page_Load(object sender, EventArgs e) { //saveURLToImage("http://localhost:2564/Pagetoimage.aspx?OrderId=7"); saveURLToImage("http://www.w3schools.com/"); } private void saveURLToImage(string url
protected void Page_Load(object sender, EventArgs e)
{
//saveURLToImage("http://localhost:2564/Pagetoimage.aspx?OrderId=7");
saveURLToImage("http://www.w3schools.com/");
}
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
byte[] b = Convert.FromBase64String(content);
System.IO.MemoryStream ms = new System.IO.MemoryStream(b);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
string folderPath = Server.MapPath("~/ImagesFolder/"); //Create a Folder in your Root directory on your solution.
string fileName = "IMageName" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".jpg";
string imagePath = folderPath + fileName;
img.Save(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
img.Dispose();
ms.Close();
}
}
string base64 = Request.Form[hfImageData.UniqueID].Split(',')[1];
byte[] bytes = Convert.FromBase64String(base64);
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
string folderPath = Server.MapPath("~/Images/"); //Create a Folder in your Root directory on your solution.
string fileName = "IMageName" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".jpg";
string imagePath = folderPath + fileName;
img.Save(imagePath, System.Drawing.Imaging.ImageFormat.Png);
但这个错误正在到来
输入不是有效的Base-64字符串,因为它包含非Base-64字符串
字符、两个以上填充字符或非法字符
在填充字符中
请帮帮我。你可以在这里使用画布。将此脚本添加到您的.aspx页面
<script type="text/javascript">
function ConvertToImage(btnExport) {
html2canvas($("selector")[0]).then(function (canvas) {
var base64 = canvas.toDataURL();
$("[id*=hfImageData]").val(base64);
__doPostBack(btnExport.name, "");
});
return false;
}
</script>
单击时在页面中添加一个按钮,您必须调用此函数,并在客户端单击时调用函数ConvertToImage()。并添加一个隐藏字段,如下所示:-
<asp:HiddenField ID="hfImageData" runat="server" />
<asp:Button ID="btnExport" Text="Export to Image" runat="server" UseSubmitBehavior="false"
OnClick="saveURLToImage" OnClientClick="return ConvertToImage(this)" />
现在,当您单击按钮时,它将在服务器上指定的路径上保存网页的图像。您可以更改要捕获其映像的jquery选择器。此解决方案使用jquery和canvas确保导入库
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.rawgit.com/niklasvh/html2canvas/master/dist/html2canvas.min.js"></script>
嗨,兄弟,它不工作了,我做了所有的更改,请帮助我。更改后,您面临的问题是什么。。。就像它抛出了一些错误一样?它就像那个页面一样工作,只来看看这个URL我有一个URL我需要传递那个URL所以你需要的是你有一个正确的URL,你想用那个URL拍摄那个页面的快照。。没有加载该url。。如果我错了,请纠正我。您正在获取网页的HTML,假装它是base64字符串,将其转换为字节数组,然后假装字节数组表示可以转换为图像的图像数据。那真的不行。您需要类似于上述解决方案之一的解决方案。