2012-08-03 19 views
26

Używam VB.Net Mam URL obrazu, powiedzmy http://localhost/image.gifJak mogę przekonwertować obraz url do system.drawing.image

muszę utworzyć obiekt System.Drawing.Image z tego pliku.

Wskazówka zapisać to do pliku, a następnie otworzyć go nie jest jednym z moich opcji również używam ItextSharp

Oto mój kod:

Dim rect As iTextSharp.text.Rectangle 
     rect = iTextSharp.text.PageSize.LETTER 
     Dim x As PDFDocument = New PDFDocument("chart", rect, 1, 1, 1, 1) 

     x.UserName = objCurrentUser.FullName 
     x.WritePageHeader(1) 
     For i = 0 To chartObj.Count - 1 
      Dim chartLink as string = "http://localhost/image.gif" 
      x.writechart(** it only accept system.darwing.image **) 

     Next 

     x.WritePageFooter() 
     x.Finish(False) 

Odpowiedz

48

Można użyć klasy WebClient aby pobrać obraz, a następnie MemoryStream, aby go przeczytać:

C#

WebClient wc = new WebClient(); 
byte[] bytes = wc.DownloadData("http://localhost/image.gif"); 
MemoryStream ms = new MemoryStream(bytes); 
System.Drawing.Image img = System.Drawing.Image.FromStream(ms); 

VB

Dim wc As New WebClient() 
Dim bytes As Byte() = wc.DownloadData("http://localhost/image.gif") 
Dim ms As New MemoryStream(bytes) 
Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(ms) 
+0

Gdybyście byli zaniepokojeni nie ma tam obrazu, czy umieścisz sekcję MemoryStream w instrukcji using? – Jason

+0

Działa idealnie. Z powodzeniem go używam. –

+0

Chciałbym upvote this SO HARD jeśli podałeś zarówno rozwiązanie ASP.Net MVC i ASP.Net Core do trasy C# - (ASP.Net Core nie może używać 'WebClient') – NoReceipt4Panda

1

Można spróbować uzyskać obraz

Dim req As System.Net.WebRequest = System.Net.WebRequest.Create("[URL here]") 
Dim response As System.Net.WebResponse = req.GetResponse() 
Dim stream As Stream = response.GetResponseStream() 

Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(stream) 
stream.Close() 
+0

czy możesz mi powiedzieć, jak mogę zrobić to samo myśl ze stroną, która 'Response.ContentType =" image/png "' naprawdę doceniam –

+0

Mogę zrobić to w taki sam sposób, jak każdy obraz, 'response.GetResponseStream()' musi działać dobrze. –

0
Dim c As New System.Net.WebClient 
Dim FileName As String = "c:\StackOverflow.png" 
c.DownloadFile(New System.Uri("http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=5"), FileName) 
Dim img As System.Drawing.Image 
img = System.Drawing.Image.FromFile(FileName) 
+0

Właściwie to lubię jego lepsze^Pędziłem, aby być pierwszym. – blang32

1

iTextSharp jest w stanie zaakceptować URI:

Image.GetInstance(uri) 
6

Pozostałe odpowiedzi są również poprawne, ale boli, że klient WebClient i MemoryStream się nie znoszą, zalecam wprowadzenie kodu w postaci using.

Przykładowy kod:

using (var wc = new WebClient()) 
{ 
    using (var imgStream = new MemoryStream(wc.DownloadData(imgUrl))) 
    { 
     using (var objImage = Image.FromStream(imgStream)) 
     { 
      //do stuff with the image 
     } 
    } 
} 

Wymagane import na początku pliku są System.IO, System.Net & System.Drawing

w VB.NET składnia była using wc as WebClient = new WebClient() { itp

Powiązane problemy