Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net中将页面转换为图像_C#_Asp.net - Fatal编程技术网

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字符串,将其转换为字节数组,然后假装字节数组表示可以转换为图像的图像数据。那真的不行。您需要类似于上述解决方案之一的解决方案。