截取 iFrame 的屏幕截图

Posted

技术标签:

【中文标题】截取 iFrame 的屏幕截图【英文标题】:Take a screenshot of an iFrame 【发布时间】:2012-03-10 21:09:30 【问题描述】:

我正在寻找一种简单的方法来在我的 ASP 页面中。我只是无法用 C# 实现它,而且我缺乏 javascript 知识!有没有人知道实现这一目标的简单和最佳方法?

我正在尝试做的是,我正在建立一个网站,学生可以登录我所在国家/地区的电子政务网站,只需单击一下即可证明他们是否继续学生,以便他们可以从我们的服务中获得折扣。

编辑:这个难题应该在本地解决。

【问题讨论】:

就个人而言,我不认为 IFRAME 的屏幕截图可以证明很多,并且作为证明学生合法的概念会明显不安全。我会提倡想出一个不同的解决方案。 【参考方案1】:

这段代码对我有用。我希望它对其他人也一样。

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); 
            img.Save(@"c:\pic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 


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

【讨论】:

它甚至回答了他的问题吗?代码没有截屏。此外,它似乎旨在下载图像并将其保存在本地,即使有框架方法。如果你给它一个页面 URL,它不会呈现它,所以没有要保存的图像。【参考方案2】:

服务器端 Take a screenshot of a webpage with JavaScript?

javascript http://html2canvas.hertzen.com/

【讨论】:

这行不通due to standard security restrictions。 如果你在第二个链接上然后测试控制台按钮,你会看到它拍摄了给定链接的快照,它确实需要给定 url 的凭据才能登录。 引用该页面:“加载外部页面存在很多问题,即使使用代理也是如此,因此许多页面根本无法呈现。” 另外,由于它需要使用代理,它无法获取 OP 想要截屏的页面……因为这需要用户的凭据。【参考方案3】:

除非我误会你,否则这是不可能的。

您不能指示用户的浏览器截取屏幕截图(这会带来安全风险……而且几乎没有用例)。 您无法加载想要自己截图的页面(带有服务器端代码),因为您没有访问它所需的凭据。

【讨论】:

@Aristos — 不,不是。那些试图将 HTML 渲染为 PNG。它在顶部说它不准确。同样的来源策略也会阻止它从 iframe 读取数据。 +1 嗯,你说得对,在这里问的那个可能是不可能的。 可以使用 JAVA 小程序截取屏幕截图。

以上是关于截取 iFrame 的屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

如何截取第二个屏幕监视器的屏幕截图?

为啥我无法截取 MPMoviePlayerController 的屏幕截图?

替代快速截取窗口的屏幕截图

如何在颤动中截取屏幕之外的小部件屏幕截图?

自动截取程序窗口的屏幕截图

在不同的资源文件中截取布局的屏幕截图