2012-02-20 148 views
3

我正在尋找一種簡單的方法在我的ASP頁面中截取iFrame的截圖。我無法用C#實現它,而且我對Javascript的知識缺乏瞭解!有沒有人知道實現這一目標的簡單而最好的方法?截取iFrame的截圖

我想要做的是,我正在建立一個網站,讓學生可以登錄到我的國家的電子政務網站,並證明他們是否繼續學生只需點擊一下,以便他們可以從我們的服務中獲得折扣。

編輯:拼圖應該在本地解決。

+0

就我個人而言,我認爲IFRAME的屏幕截圖並不是很多的證據,並且作爲證明學生是合法的概念會顯着不安全。我會主張想出一個不同的解決方案。 – SpaceBison 2012-02-20 14:27:39

回答

2

這段代碼爲我工作。我希望它對其他人也一樣。

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(); 
     } 
    } 
+1

它甚至回答他的問題嗎?該代碼沒有截圖。此外,它似乎被設計爲下載圖像並將其保存在本地,即使有框架方法。如果你給它一個頁面的URL,它不會渲染它,所以沒有圖像可以保存。 – Edgar 2016-03-09 13:10:02

0

除非我誤解了你,否則這是不可能的。

  • 你不能指示用戶的瀏覽器截圖(這將是一個安全風險......並且幾乎沒有用例)。
  • 由於您沒有訪問它所需的憑據,因此無法加載您想要自己截圖的頁面(使用服務器端代碼)。
+0

@Aristos - 不,它不是。那些嘗試呈現HTML到PNG。它在頂部說它不準確。同樣的來源策略會阻止它從iframe中讀取數據。 – Quentin 2012-02-20 14:32:26

+0

+1嗯你有權利,在這裏問的人也許這種方式是不可能的。 – Aristos 2012-02-20 14:35:53

+0

可以使用JAVA小程序截取屏幕截圖。 – 2012-02-20 14:38:35

-2
+0

由於標準安全限制,這不起作用(http://en.wikipedia.org/wiki/Same_origin_policy)。 – Quentin 2012-02-20 14:33:02

+0

如果你在第二個鏈接,然後測試控制檯按鈕,你會發現它需要一個給定鏈接的快照,這是真的,它需要給定url的憑據登錄。 – 2012-02-22 14:44:50

+0

引用該頁面:「加載外部頁面存在很多問題,即使使用代理也是如此,因此許多頁面根本不會渲染。」 – Quentin 2012-02-22 14:49:09