Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TÉLÉCHARGER UNE IMAGE D'UN SITE WEB ET L'AFFICHER DANS UN PICTUREBOX


Information sur la source

Catégorie :Réseau & Internet Source .NET ( DotNet ) Classé sous : HttpWebResponse, WebRequest, Stream, Téléchargement Image, MemoryStream Niveau : Débutant Date de création : 13/09/2008 Date de mise à jour : 14/09/2008 01:34:32 Vu / téléchargé: 5 581 / 280

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bonjour,

Voici un simple exemple qui illustre l'utilisation des deux classes HttpWebRequest et HttpWebResponse pour acquérir un Paquet HTTP
Dans cette petite source, on utilise ces deux classe pour vérifier si une réponse du serveur contient des données d'une image et si oui la transformée d'un NetworkStream en Bitmap, puis l'afficher dans un TextBox.

Bon prog
 

Source

  • '=====================================================================================
  • ' # # '
  • ' ## # # # # @ @ @ '
  • ' ### " ##### # # # # " " # '
  • ' ## # ## ##### # # #### # # # # # '
  • ' ########### ####### ## # # ## # # # # # # '
  • ' ## # #### # # ## # # # # '
  • ' ## ## @ # # ##### # # # # # # # ## '
  • ' # " ## #### # ## # #### ###### # ## '
  • ' # ##### ## # ## @ # # # # # '
  • ' # # " # # # # # # '
  • ' # ## # # ################################# '
  • ' ##### ##### ### # ## '
  • ' ###### # ## '
  • '=====================================================================================
  • 'Utilisation Libre
  • 'Auteur: Boutemine Oualid
  • Imports System
  • Imports System.Net
  • Imports System.IO
  • Public Class frmMain
  • '''<summary>
  • '''The stream buffer size.
  • '''</summary>
  • Public Const BufferSize As Integer = 512 * 1024
  • '''<summary>
  • '''The bloc reading size.
  • '''</summary>
  • Public Const BufferReadSize As Integer = 1024
  • Private Sub btnGetPicture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetPicture.Click
  • 'Envoi de la requette.
  • Dim imageRequest As HttpWebRequest
  • 'Lecture de la réponse
  • Dim serverResponse As WebResponse
  • Try
  • imageRequest = CType(WebRequest.Create(txtURL.Text), HttpWebRequest)
  • serverResponse = imageRequest.GetResponse()
  • 'Vérification que le paquet HTTP est descriptif d'une image
  • If Not serverResponse.ContentType.StartsWith("image/") Then
  • MsgBox("Le fichier n'est pas une image valide!", MsgBoxStyle.Critical)
  • Exit Sub
  • End If
  • 'Analyse du contenu du paquet HTTP
  • Dim responseStream As Stream = serverResponse.GetResponseStream()
  • 'Utiliser pour stocker temporairement le contenu du paquet.
  • Dim buffer(BufferSize) As Byte
  • 'Nombre d'octets lus dans la portion courante du Flux.
  • Dim read As Integer
  • 'Nombre total des octets lus
  • Dim parsedBytes As Integer = 0
  • While True
  • 'Lecture d'un nouveau bloc de taille maximale 1024 octet (BufferReadSize)
  • read = responseStream.Read(buffer, parsedBytes, BufferReadSize)
  • If read = 0 Then Exit While 'Fin du flux.
  • parsedBytes += read
  • End While
  • 'Libération de ressources mémoire.
  • responseStream.Close()
  • 'Transformation des données du buffer vers un Memory Stream
  • Dim pictureStream As MemoryStream = New MemoryStream(buffer)
  • 'Transformation en Image
  • Dim logo As Image = Image.FromStream(pictureStream)
  • 'Affichage de l'image.
  • pbxLogo.Image = logo
  • Catch ex As Exception
  • MsgBox(ex.Message)
  • Finally
  • If Not serverResponse Is Nothing Then
  • serverResponse.Close()
  • End If
  • End Try
  • End Sub
  • End Class
'=====================================================================================
'                           #  #                                                     '
'                 ##        #  #         # #      @ @ @                              '
'    ###    "    #####       #  #          # #      " "      #                       '
'   ##  #     ##    #####    #  #   ####    # #        #  #   #                      '
'  ########### #######     ##   #  #    ##   # #    #   #  #   #                     '
' ##                      #            ####  # #   ##    #  #   #                #   '
'        ## ## @           #  #    #####      # #  #  #   #  #  #                ##  '
'      #        "        ##    #### #       ##  # #### ######  #                  ## '
'       #          #####  ##  #   ##   @  #                           #  #  #      # '
'        #                   #          " #     #                     #  #  #     #  '
'         #                ##            #    #  #################################   '
'          #####      #####           ###    # ##                                    '
'               ######                      #                                ##      '
'=====================================================================================
'Utilisation Libre
'Auteur: Boutemine Oualid

Imports System
Imports System.Net
Imports System.IO

Public Class frmMain
    '''<summary>
    '''The stream buffer size.
    '''</summary>
    Public Const BufferSize As Integer = 512 * 1024
    '''<summary>
    '''The bloc reading size.
    '''</summary>
    Public Const BufferReadSize As Integer = 1024

    Private Sub btnGetPicture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetPicture.Click
        'Envoi de la requette.
        Dim imageRequest As HttpWebRequest
        'Lecture de la réponse
        Dim serverResponse As WebResponse
        Try
            imageRequest = CType(WebRequest.Create(txtURL.Text), HttpWebRequest)
            serverResponse = imageRequest.GetResponse()
            'Vérification que le paquet HTTP est descriptif d'une image
            If Not serverResponse.ContentType.StartsWith("image/") Then
                MsgBox("Le fichier n'est pas une image valide!", MsgBoxStyle.Critical)
                Exit Sub
            End If
            'Analyse du contenu du paquet HTTP
            Dim responseStream As Stream = serverResponse.GetResponseStream()
            'Utiliser pour stocker temporairement le contenu du paquet.
            Dim buffer(BufferSize) As Byte
            'Nombre d'octets lus dans la portion courante du Flux.
            Dim read As Integer
            'Nombre total des octets lus
            Dim parsedBytes As Integer = 0
            While True
                'Lecture d'un nouveau bloc de taille maximale 1024 octet (BufferReadSize)
                read = responseStream.Read(buffer, parsedBytes, BufferReadSize)
                If read = 0 Then Exit While 'Fin du flux.
                parsedBytes += read
            End While
            'Libération de ressources mémoire.
            responseStream.Close()
            'Transformation des données du buffer vers un Memory Stream
            Dim pictureStream As MemoryStream = New MemoryStream(buffer)
            'Transformation en Image
            Dim logo As Image = Image.FromStream(pictureStream)
            'Affichage de l'image.
            pbxLogo.Image = logo
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            If Not serverResponse Is Nothing Then
                serverResponse.Close()
            End If
        End Try
    End Sub
End Class

Conclusion

C'est le mécanisme de base pour le web browser.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

14 septembre 2008 01:28:20 :
Quelques fautes
14 septembre 2008 01:34:32 :
J'ai oublier de fermer la communication avec le serveur

Commentaires et avis

signaler à un administrateur
Commentaire de bigflo93 le 13/09/2008 22:51:59

Bonjour,

Pourquoi ne pas plutôt utiliser la classe WebClient ?
Cette classe propose la méthode OpenRead qui renvoie un Stream, que l'on peut donc utiliser avec la pictureBox via la méthode static Image.FromStream.
Ca ne serait pas plus simple ? :)

signaler à un administrateur
Commentaire de gillardg le 13/09/2008 23:18:39

un peu comme ceci : ( pas de moi )

   Public Function GetOnlineImage(ByVal URL As String) As Image
        Dim i As Image
        Dim w As New System.Net.WebClient
        Dim b() As Byte
        Dim m As System.IO.MemoryStream

        ' download the Image Data in a Byte array
        b = w.DownloadData(URL)

        ' create a memory stream from that Byte array
        m = New System.IO.MemoryStream(b)
        ' now create an Image from Memory Stream
        i = Image.FromStream(m)

        ' release the WebClient
        w.Dispose()

        ' return image
        Return i
    End Function

signaler à un administrateur
Commentaire de BadoqueAlex le 14/09/2008 01:18:18

Et pourquoi ne pas utiliser les propriétés Asynchrones d'une picturebox ? ... Ralalala
Bon, même si afficher l'image n'est pas le but premier, il ne faut pas induire les gens dans l'erreur.

signaler à un administrateur
Commentaire de boutemine le 14/09/2008 01:56:59

Hollaaaaaa ,
Il s'agit d'une methode comme les autres, le principe ici est d'illustrer l'utilisation de la classe WebResponse et comment vérifier si un paquet HTTP contient une image.

je sais que l'utilisation de la classe WebClient est mieux, mais l'utilité de l'utilisation de la classe WebResponse vient dans le cas de communication avec une Camera IP, le serveur video inclus dans la cam repond par 2 methodes classiques:
- Une image simple, et la l'utilisation de la class WebClient suffit.
- Une suite d'images: MotionJPEG, et ici on doit traiter le paquet manuellement pour le filtrer et extraire les images, donc on doit vérifier si c'est une suite d'image ou non.

Voici un exemple d'une caméra ip libre sur le net.
http://195.243.185.195/axis-cgi/jpg/image.cgi?camera=1
http://195.243.185.195/axis-cgi/jpg/image.cgi?camera=2
http://195.243.185.195/axis-cgi/jpg/image.cgi?camera=3
http://195.243.185.195/axis-cgi/jpg/image.cgi?camera=4
(Airport de stuttgart
Ici l'utilisation de la class WebResponse peut aider pour identifier le type du paquet (ContentType = "multipart/x-mixed-replace; boundary=--myboundary"



Essayer maintenant avec le mJPEG
http://195.243.185.195/axis-cgi/mjpg/video.cgi?camera=1

Ici vous serez obliger de connaître l'architecture du stream de reponse pour le parser en suite d'images affichables sur un picture box.

Bon prog

signaler à un administrateur
Commentaire de gillardg le 14/09/2008 02:03:39 9/10

merci pour l'explication
bonne soirée

signaler à un administrateur
Commentaire de boutemine le 14/09/2008 02:14:12

Merci Gillardg,
Bon soirée

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

PR EXPERT: CAPTURE DATAPIXEL D UN FRAME D UN AVI [EN MEMOIRE] [ par Freneticode ] ---&gt; FrenetiCodeVoici mon Code..!!Private Sub cmd_open_Click()Dim FILE As cFileDlgDim NAME_FILE As StringDim AVI As LongDim STREAM As Lon De Access vers MySQL [ par philagui ] Bonjour,je suis en train d'essayer de faire un "copier-coller" d'une base de données Access vers une base de données MySQL et ceci par l'intermédiaire Stream NTFS en VB [ par UnExPeCtEdSpy ] Bonjour,Voila, j'pose pas souvent d'kestion pis la j'en ai une alors j'me géne pas :)J'arrive a créer , récupérer, détruire un alternate Stream dans u Graphic overlay sur webcam stream [ par atlan ] Salut,Je recherche une maniere ou un exemple d'un overlay de texte ou de graphique sur un webcal stream. De preference en VB.Net.Mercie d'avanceAtlan directdraw creation de surface depuis un Stream [ par MrDogbert ] Si quelqu'un sait comment créer une surface depuis autre chose qu'un nom de fichier (un Stream ou un objet Image seraient l'ideal) je suis preneur!!!m AVI (Audio/Video) [ par hackademius ] salut , je vois tout dabord que tout le monde s'en fou des questions qu'on pose alors je reitaire ma question(sous une autre forme ) puisque persone n AVI(Audio/Video) [ par hackademius ] j'ai apris que AVI -&gt; Audio / Video) - j'ai un fichier video AVI dans lequel j'ai un stream video- j'ai un fichier audio WAV dans lequel j'ai un st WinHttp request et barre de progression [ par oliarn ] Voila, grace a mon logiciel on peut telecharger des images disponible sur une page web. Totu marche bien sauf que si j'arrive a faire une barre de pr webrequest et script de configuration automatique [ par C3B12 ] Comment télécharger un fichier si l'on accède à Internet via un script de configuration automatique dans le cadre de la politique de sécurité de son e [VB.NET] OpenFileDialog, débutant .NET [ par el_teedee ] Salut, j'aimerais proposer l'ouverture de fichier par la m&#233;thode "OpenFileDialog". Sur MSDN, c'est marqu&#233; qu'il faut faire une classe &lt;


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,998 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.