web-dev-qa-db-fra.com

Comment puis-je convertir l'URL de l'image en system.drawing.image

J'utilise VB.Net J'ai l'URL d'une image, disons http://localhost/image.gif

J'ai besoin de créer un objet System.Drawing.Image à partir de ce fichier.

Avis enregistrer ceci dans un fichier puis l'ouvrir n'est pas l'une de mes options J'utilise aussi ItextSharp

voici mon 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)
29
Mina Gabriel

Vous pouvez utiliser la classe WebClient pour télécharger une image, puis MemoryStream pour la lire:

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)
55
Varius

Les autres réponses sont également correctes, mais cela fait mal de voir le client Web et MemoryStream ne pas être disposés, je vous recommande de placer votre code dans une using.

Exemple de code:

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

Les importations requises en haut de votre fichier sont System.IO, System.Net & System.Drawing

Dans VB.net, la syntaxe était using wc as WebClient = new WebClient() { etc.

12
T_D

Vous pouvez essayer ceci pour obtenir l'image

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 est capable d'accepter les actions d'Uri:

Image.GetInstance(uri)
1
VahidN
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
blang32