Soyez le premier à donner votre avis sur cette source.
Vue 12 724 fois - Téléchargée 728 fois
'===================================================================================== ' # # ' ' ## # # # # @ @ @ ' ' ### " ##### # # # # " " # ' ' ## # ## ##### # # #### # # # # # ' ' ########### ####### ## # # ## # # # # # # ' ' ## # #### # # ## # # # # ' ' ## ## @ # # ##### # # # # # # # ## ' ' # " ## #### # ## # #### ###### # ## ' ' # ##### ## # ## @ # # # # # ' ' # # " # # # # # # ' ' # ## # # ################################# ' ' ##### ##### ### # ## ' ' ###### # ## ' '===================================================================================== '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
Bon soirée
bonne soirée
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
Bon, même si afficher l'image n'est pas le but premier, il ne faut pas induire les gens dans l'erreur.
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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.