Ich verwende VB.Net
Ich habe eine URL eines Bildes, sagen wir http://localhost/image.gif
Ich muss ein System.Drawing.Image-Objekt aus dieser Datei erstellen.
Hinweis Speichern Sie diese in einer Datei und öffnen Sie sie dann nicht. Ich benutze auch ItextSharp
.
hier ist mein code:
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)
Sie können die WebClient-Klasse verwenden, um ein Image herunterzuladen, und dann MemoryStream, um es zu lesen:
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)
Die anderen Antworten sind auch richtig, aber es tut weh, wenn der Webclient und der MemoryStream nicht entsorgt werden. Ich empfehle Ihnen, Ihren Code in eine using
zu setzen.
Beispielcode:
using (var wc = new WebClient())
{
using (var imgStream = new MemoryStream(wc.DownloadData(imgUrl)))
{
using (var objImage = Image.FromStream(imgStream))
{
//do stuff with the image
}
}
}
Die erforderlichen Importe oben in Ihrer Datei sind System.IO
, System.Net
& System.Drawing
In VB.net lautete die Syntax using wc as WebClient = new WebClient() {
etc
Sie können dies versuchen, um das Bild zu erhalten
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()
iTextSharp kann Uris akzeptieren:
Image.GetInstance(uri)
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)