2015-05-26 69 views
0

我有以下程序如果我通過該值作爲"D:\\ENSource\\1.png"將圖像轉換爲字節陣列如何將URI圖像路徑傳遞給FileInfo類?

public byte[] ReadImageFile(string imageLocation) 
     { 
      byte[] imageData = null; 
      FileInfo fileInfo = new FileInfo(imageLocation); 
      long imageFileLength = fileInfo.Length; 
      FileStream fs = new FileStream(imageLocation, FileMode.Open, FileAccess.Read); 
      BinaryReader br = new BinaryReader(fs); 
      imageData = br.ReadBytes((int)imageFileLength); 
      return imageData; 
     } 

,它工作正常。

,但如果我送價值「http://i.stack.imgur.com/PShuQ.png」它拋出異常

URI格式不被支持

我怎樣才能做到這一點?

+1

使用例如WebClient類從URI位置下載圖像。 –

+0

你不能。 **不支持URI格式**如果你想通過互聯網加載圖片,看看[這裏](http://stackoverflow.com/questions/16091997/best-way-image-url-to-繪製圖像?lq = 1) – Blorgbeard

回答

5

FileInfoFileStream與本地文件一起工作,沒有辦法「通過Uri」到他們中的任何一個。

要處理的Uri您可以:

  • 地圖服務器到本地驅動器(即,如果服務器支持WebDAV的)。
  • 使用Http相關類(如HttpClientWebClient)從服務器下載文件並獲取字節。即Image to byte array from a url
+0

謝謝Alexei ... var webClient = new WebClient(); byte [] imageBytes = webClient.DownloadData(「http://i.stack.imgur.com/PShuQ.png」); –

1

編輯! 請參閱@ Alexei的回覆。 他扔了一個更好的(閱讀:更簡單),使用webclient的解決方案。 如果有人想要查看更詳細的查詢Web服務器的示例,我將在此處留下回復。

我剛剛給了阿列克謝一個打勾(他很正確),但只是爲了填補這一點。 。 。

您正在與Web服務器通信,而不是文件系統。 因此,您需要手動「請求」來自服務器的數據,然後傳遞結果流。

請參閱以下代碼片段。 。 。 http://www.digitalcoding.com/Code-Snippets/C-Sharp/C-Code-Snippet-Download-Image-from-URL.html

+0

所以我同樣......(: –

相關問題