截取 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 的屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章