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 :

WebBrowser capture (image) du contenu


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut WebBrowser capture (image) du contenu
    Bonsoir à tous,
    Je tourne en rond depuis qlq temps sur ce problème :
    - save d'une image (snapshot) issue du contrôle webbrowser
    Le code ci-dessous fonction et capture bien une image...
    En revanche, je n'ai pas toute la page web, seulement ce qui est "vue" dans la fenêtre du browser... et je ne peux pas étendre la fenêtre du browser.
    Donc ce que je cherche est :
    - capture entiere de la page affiché dans le browser, même si toute la page n'est pas visuble.
    le 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
    Public Class Form1
        Dim imgfile As String = "c:\temp\snapshot.jpg"
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            ComboBox1.Items.Add("http://fr.wikipedia.org/wiki/Softimage")
            'ComboBox1.Items.Add("http://fr.toto.com/softimage/")
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            WebBrowser1.Navigate(ComboBox1.SelectedItem)
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            WebBrowser1.Refresh()
        End Sub
     
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim wbWidth As Integer = WebBrowser1.Width
            Dim wbHeight As Integer = WebBrowser1.Height
            WebBrowser1.Size = New Size(wbWidth, wbHeight)
            Dim jpg As New Bitmap(WebBrowser1.Width, WebBrowser1.Height)
     
            ' ici le drawtobitmap ne semble pas être une "methode" de webbrowser.. ???? même si ça fonctionne.
            WebBrowser1.DrawToBitmap(jpg, New Rectangle(0, 0, wbWidth, wbHeight))
     
            jpg.Save(imgfile, System.Drawing.Imaging.ImageFormat.Jpeg)
            jpg.Dispose()
        End Sub
     
        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            System.IO.File.Delete(imgfile)
        End Sub
    End Class
    Pour faire fonctionner le code ci-dessus :
    - créer une form, un panel1 et dans le panel1 ajouter le control webbrowser, et enfin les boutons...

    De plus, quand je me déplace dans le webbrowser (scrollbar) et que je fais un save d'image (bouton3), j'obtiens une image blanche ???

    Avez vous une idée de réponse pour ces deux questions ?
    Merci
    Patrick

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir PatrickVier,

    Ce projet devrait te mettre sur la voie :

    http://www.codeproject.com/Articles/...bCapture1b.zip

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut
    Bonsoir Wallace,
    merci du lien, mais je l'ai déjà essayé, enfin seulement le code suivant :
    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
            Try
                Dim scrollWidth As Integer
                Dim scrollHeight As Integer
                scrollHeight = WebBrowser1.Document.Body.ScrollRectangle.Height
                scrollWidth = WebBrowser1.Document.Body.ScrollRectangle.Width
                WebBrowser1.Size = New Size(scrollWidth, scrollHeight)
                Dim bm As New Bitmap(scrollWidth, scrollHeight)
                WebBrowser1.DrawToBitmap(bm, New Rectangle(0, 0, bm.Width, bm.Height))
                'Dim SaveAsName As String
                'SaveAsName = Regex.Replace(textWebURL.Text, "(\\|\/|\:|\*|\?|\""|\<|\>|\|)?", "")
                bm.Save(imgfile, System.Drawing.Imaging.ImageFormat.Png)
                bm.Dispose()
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                '
            End Try
    Je l'ai mis dans le bouron3...
    Effectivement l'image sauvé est grande et semble bien avoir la taille de la page ouverte dans webbrowser. En revanche, j'ai toujours que ce que voit le control webrowser en haut de l'image et le reste noir...
    Je vais loader le projet complet, pour voir si j'ai une réponse ou même une piste.
    Pour la sauvegarde de l'image "blanche" voir mon post précedent, j'ai toujours la même chose, quand je deplace les scrollbars... (sur le lien, il préconise d'utiliser le code ci-dessus si probleme image blanche, bah!!! je l'ai aussi même avec ce code)
    Une idée ??
    Merci
    Patrick

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut
    Bonjour,
    j'ai pu régler un de mes 2 problèmes.
    je peux maintenant faire une capture de la totalité de la page web même si le contrôle n'en montre qu'une partie.
    La raison : j'avais mis le webbrowser dans un panel et dans ce cas, le wb ne pouvais pas s'étendre au delà du panel pour la capture. Donc sortir le wb du panel.
    le 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
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim wbW As Integer
            Dim wbH As Integer
            wbW = WebBrowser1.Width
            wbH = WebBrowser1.Height
     
            Dim scrollWidth As Integer
            Dim scrollHeight As Integer
            scrollHeight = WebBrowser1.Document.Body.ScrollRectangle.Height
            scrollWidth = WebBrowser1.Document.Body.ScrollRectangle.Width
            WebBrowser1.Size = New Size(scrollWidth, scrollHeight)
     
            Dim jpg As New Bitmap(scrollWidth, scrollHeight)
            WebBrowser1.DrawToBitmap(jpg, New Rectangle(0, 0, scrollWidth, scrollHeight))
            jpg.Save(imgfile, System.Drawing.Imaging.ImageFormat.Jpeg)
            jpg.Dispose()
     
            WebBrowser1.Size = New Size(wbW, wbH)
     
        End Sub
    En revanche, j'ai toujours le même problème quand, dans mon wb je me déplace avec les scrollbar ou même un simple click dedans, la capture est blanche. Impossible de revenir en arrière, obligé de recharger l'URL (ce n'est pas un refresh) ou relancer l'applie pour retrouver une image en capture.
    Une idée ?
    Merci
    Patrick

Discussions similaires

  1. [RegEx] capture d'un contenu d'une chaine
    Par titouille dans le forum Langage
    Réponses: 2
    Dernier message: 03/02/2010, 22h11
  2. Camera Capture Image Qualité
    Par Nicolas_B_ dans le forum Windev Mobile
    Réponses: 2
    Dernier message: 30/06/2009, 15h33
  3. [E-07] amélioration code capture image feuille
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/03/2009, 22h09
  4. Capture image d'un forme active ou non
    Par pc152 dans le forum C#
    Réponses: 2
    Dernier message: 27/05/2008, 20h30
  5. Capture image par imprime ecran
    Par tomnie dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 14/04/2004, 09h02

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