IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Load Image dans listview1 avec HTML


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 320
    Points : 261
    Points
    261
    Par défaut Load Image dans listview1 avec HTML
    Bonjour,

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Public Class Form1
        Dim URL As String = "http://flux.radio.free.fr/"
        Dim imgList As New ImageList
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            imgList.ImageSize = New Size(48, 48)
            ListView1.SmallImageList = imgList
            Dim request As System.Net.HttpWebRequest = CType(System.Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)
            Dim response As System.Net.HttpWebResponse = CType(request.GetResponse, Net.HttpWebResponse)
            Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
            Dim resourcecode As String = sr.ReadToEnd
            Dim r As New System.Text.RegularExpressions.Regex("<td(.*)>(.*)</td>", RegexOptions.IgnoreCase)
            Dim i As New System.Text.RegularExpressions.Regex("img alt="""" src=(.*)""", RegexOptions.IgnoreCase)
            Dim matches2 As MatchCollection = r.Matches(resourcecode)
            Dim matches As MatchCollection = i.Matches(resourcecode)
            For Each itemcode2 As Match In matches2
                For Each itemcode As Match In matches
                    Dim urlimage As String = itemcode.Groups(1).Value
                    urlimage = urlimage.Replace("""", "")
                    Dim index As Integer = 0
                    imgList.Images.Add(ChargerImage("http://flux.radio.free.fr/" & urlimage))
                    Dim lvi As New ListViewItem(urlimage)
                    lvi.ImageIndex = index
                    lvi.SubItems.Add(itemcode2.Groups(2).Value)
                    ListView1.Items.Add(lvi)
                Next
            Next
        End Sub
     
        Private Function ChargerImage(ByVal url As String) As Image
            Dim client As New WebClient()
            Using str As Stream = client.OpenRead(url)
                Return Image.FromStream(str)
            End Using
        End Function
     
    End Class
    je suis entrain de créer un web radio par rapport au lien de la station.
    je voudrais savoir si il y a un moyen pour charger l'image plus rapidement car avec mon ça prend plus 5 min pour charger l'image.

    avez-vous une solution pour charger l'image dans listview1 plus rapidement.
    Merci de votre compréhension,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Tes deux boucles imbriquées me paraissent bizarres : ta première regexp récupère des libellés je suppose et ta deuxième les images. Pour un libellé, une image donc je ne comprend par les Foreach imbriqués.
    Ton code va récupérer toutes les images sur chaque libellé. Je comprends que ce soit long...
    Pour faire plus rapide, je pense que charger chaque image une seule fois peut être la solution

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 320
    Points : 261
    Points
    261
    Par défaut
    Bonjour,

    Merci d'avoir répondu ebastien,

    j'ai un petit problème avec les stations dans listview1, il sont en triple le mème station dans listview1.
    voici en image :
    Nom : station.jpg
Affichages : 407
Taille : 40,5 Ko

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim request As System.Net.HttpWebRequest = CType(System.Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)
            Dim response As System.Net.HttpWebResponse = CType(request.GetResponse, Net.HttpWebResponse)
            Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
            Dim str As String = sr.ReadToEnd
            Dim r As New System.Text.RegularExpressions.Regex(".*<td>([^<]*)</td>.*", RegexOptions.IgnoreCase)
    Dim matches2 As MatchCollection = r.Matches(str)
    For Each itemcode2 As Match In matches2
    Dim lvi As New ListViewItem()
    lvi.SubItems.Add(itemcode2.Groups(1).Value)
                    ListView1.Items.Add(lvi)
    next
    response.Close()
            sr.Close()
    j'arrive pas a voir les stations un par un. avez-vous un idée comment faire?
    Merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Probablement l'expression régulière à revoir. Sinon, passer par une liste (ce qui sera de toute façon plus propre) et supprimer les doublons à l'aide de Enumerable.Distinct.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 320
    Points : 261
    Points
    261
    Par défaut
    Bonjour,

    j'ai essayer avec xmldocument mais j'arrive pas lire.

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim URL As String = "http://flux.radio.free.fr/"
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim request As System.Net.HttpWebRequest = CType(System.Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)
            Dim response As System.Net.HttpWebResponse = CType(request.GetResponse, Net.HttpWebResponse)
            Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
            Dim str As String = sr.ReadToEnd
            Dim xmlDoc As New XmlDocument()
            Dim namespaces As New XmlNamespaceManager(xmlDoc.NameTable)
            namespaces.AddNamespace("ns", "http://www.w3.org/1999/xhtml")
            xmlDoc.LoadXml(Str)
            Dim nodes As XmlNodeList = xmlDoc.DocumentElement.SelectNodes("/ns:html/ns:body/ns:tr", namespaces)
            For Each node As XmlNode In nodes
                Dim addr As String = node.SelectSingleNode("ns:td width="".*""", namespaces).InnerText
                RichTextBox1.AppendText(addr & Environment.NewLine)
            Next
        End Sub
    voici html en txt :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
    <meta content="fr" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Site en cours de maintenance</title>
    <style type="text/css">
    .style1 {
            text-align: center;
    }
    .style2 {
            text-align: center;
            text-decoration: underline;
    }
    </style>
    </head>
     
    <body>
     
    <p class="style1">
    <img alt="Annuaire des flux radio" height="134" src="logo6.gif" width="476" /></p>
    <p class="style1">Site en cours de maintenance !&nbsp; Mais retrouvez tous vos 
    liens ci dessous ! ;)</p>
    <h2 class="style2">Radios d’infos</h2>
    <p><img alt="" src="Sans%20titre%2035.gif" />:</p>
    <table id="table25" bgcolor="#e5e5e5" border="1" bordercolor="#808080" style="width: 403px; border-collapse: collapse; height: 16px;">
    	<tr>
    		<td width="399">http://streaming.radio.rtl.fr/rtl-1-44-96</td>
    	</tr>
    </table>
    <hr />
    <p class="story"><img alt="" src="Sans%20titre%2036.gif" />:</p>
    <table id="table26" bgcolor="#e5e5e5" border="1" bordercolor="#808080" style="width: 403px; border-collapse: collapse; height: 16px;">
    	<tr>
    		<td width="399">http://cache.yacast.fr/V4/rmc/rmc.m3u</td>
    	</tr>
    </table>
    <hr />
    <p class="story"><img alt="" src="Sans%20titre%2037.gif" />:</p>
    <table id="table27" bgcolor="#e5e5e5" border="1" bordercolor="#808080" style="width: 403px; border-collapse: collapse; height: 16px;">
    	<tr>
    		<td width="399">http://live.europe1.fr/V4/europe1/europe1.asx</td>
    	</tr>
    </table>
    <hr />
    <p class="story"><img alt="" src="Sans%20titre%2038.gif" />:</p>
    <table id="table28" bgcolor="#e5e5e5" border="1" bordercolor="#808080" style="width: 494px; border-collapse: collapse; height: 16px;">
    	<tr>
    		<td width="490">
    		http://www.tv-radio.com/station/france_inter_mp3/france_inter_mp3-128k.m3u</td>
    	</tr>
    </table>
    <!-- ...... etc -->

    je voudrais savoir comment le lire xmldocument le fichier HTML? d’où vient le problème de lecture.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    A mon avis l'expression régulière est préférable. D'autant que tu pourrais la paramétrer au cas où la structure du site change.
    Ta première piste me paraît donc être la bonne. Tu reprends ton code, et plutôt que de mettre directement le résultat dans la ListView, tu construis une liste<string> et tu supprimes les doublons de cette liste si tu as des doublons.

    Maintenant, le mieux serait quand même de créer une classe Radio comportant le nom, l'url, l'image etc et de stocker les Radio(s) dans une List<Radio>.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/08/2015, 12h44
  2. Inserer image dans excel avec PHP
    Par hamzito dans le forum Langage
    Réponses: 5
    Dernier message: 12/08/2011, 12h53
  3. avec click sur un lien, ouvrir une image dans une page html
    Par Bydouille dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 17/10/2007, 20h40
  4. insérer des images dans MySQL avec PHPMyAdmin
    Par intik dans le forum Outils
    Réponses: 1
    Dernier message: 29/08/2006, 09h59
  5. Image dans un tableau HTML
    Par andlio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/05/2006, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo