ImageList et Webbrowser

Signaler
Messages postés
58
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
3 janvier 2015
-
 Utilisateur anonyme -
Bonjour,

je voudrai afficher une image provenant d'une ImageList (ou PictureBox) dans un Webbrowser. Le soucis n'est pas le code HTML mais le chemin de l'image. Quelqu'un aurait-il une piste à me conseiller ?

Merci d'avance.
A voir également:

6 réponses


Bonsoir,

Je n'en suis pas certain mais il semble que l'appel d'une image par code HTML nécessite la présence physique de celle-ci. Donc, à mon avis, tu n'as pas d'autre choix que d'écrire l'image sur le disque.
Mais je peux me tromper.

Pour cela, tu peux te servir de la méthode Save, valable aussi bien pour un Imagelist que pour un Picturebox.
ImageList1.Images.Item(0).Save("monimage.jpg", Imaging.ImageFormat.Jpeg)
Messages postés
58
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
3 janvier 2015
1
Merci pour ta réponse mais mon but final est de ne pas passer par des fichiers. Je pense que c'est possible avec du stream mais je n'arrive pas à ajouter les images en stream.

Je suis tombé sur cette page: documentstream

Et dans note:
Utilisez cette propriété pour charger une page Web dans le contrôle WebBrowser à partir d'un objet Stream. Par exemple, vous pouvez utiliser cette propriété pour charger des pages Web à partir d'une base de données ou d'un fichier de ressources. Lorsque vous définissez cette propriété, le contrôle WebBrowser navigue automatiquement vers l'URL about:blank avant de charger le texte spécifié. Cela signifie que les événements Navigating, Navigated et DocumentCompleted se produisent lorsque vous définissez cette propriété, et la valeur de la propriété Url n'est plus significative.

Pour accéder au contenu d'une page Web sous la forme d'une chaîne, utilisez la propriété DocumentText. Vous pouvez également accéder au contenu de la page à l'aide du modèle objet de document HTML (DOM) via la propriété Document.



Des liens ou des idées, je suis toujours preneur.

Intéressant ton lien. De mon côté, j'ai cherché aussi et il se trouve que l'on peut transformer un tableau de byte en base64 et l'insérer dans une balise html.
Tu peux suivre l'exemple ci-dessous pour te faire une idée :
'lecture de l'image et remplissage d'un tableau (data)
'ici je prend l'image sur le disque mais elle peut etre stockée dans tes ressources par exemple
Dim data() As Byte = IO.File.ReadAllBytes("monimage.jpg")
'code HTML avec balise image dans laquelle on insère le tableau data converti en Base64
Dim datastr As String = "<html>blablabla
</html>"
'création d'un webbrowser
Dim wb As New WebBrowser
'ajout au formulaire
Me.Controls.Add(wb)
'envoi du code html au webbrowser
wb.DocumentText = datastr

Je n'ai répondu qu'à la moitié de la question.
Pour extraire ton image d'un imagelist tu peux passer par un memorystream.
Voici le code complet :
Dim ms As New IO.MemoryStream
ImageList1.Images.Item(0).Save(ms, Imaging.ImageFormat.Jpeg)
Dim data(Convert.ToInt32(ms.Length - 1)) As Byte
ms.Position = 0
ms.Read(data, 0, data.Length)
'code HTML avec balise image dans laquelle on insère le tableau data converti en Base64
Dim datastr As String = "<html>blablabla
</html>"
'création d'un webbrowser
Dim wb As New WebBrowser
'ajout au formulaire
Me.Controls.Add(wb)
'envoi du code html au webbrowser
wb.DocumentText = datastr
Messages postés
58
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
3 janvier 2015
1
Encore merci pour ton aide et désolé pour cette réponse tardive.

Oui, j'ai déjà pensé à cette méthode pour les images, mais le problème est un peu plus corsé lorsque la page web contient des feuilles CSS, du javascript ou même des frames.
Je cherche toujours une solution un peu plus simpliste (je te tiens au courant ;), mais j'ai toujours rien pour le moment.

Enfaite le but du bout de code, c'est que je puisse lire une page web situé dans une archive sans la décompressé (juste avec des DocumentStream par exemple).

Je suis encore preneur de d'autres idées :)

J'ai pourtant répondu à ta question. Si maintenant, tu la changes en cours de route, qu'y puis-je ?