Dossier d'images, Listview et PictureBox [Résolu]

- - Dernière réponse :  titwawa - 12 mai 2014 à 12:55
Bonjour à tous,

J'aimerais pour un projet récupérer des images d'un dossier et les afficher dans un listview. Ensuite, quand l'utilisateur clique sur l'une des images stockées dans le listview, l'image devrait s'afficher dans un picturebox.

voici mon code
 
Private Sub UltraButton1_Click(sender As Object, e As EventArgs) Handles UltraButton1.Click
        Dim nombre As Integer

        For Each file As String In System.IO.Directory.GetFiles("C:\Users\titwawa\Pictures")
            Dim img As System.Drawing.Image = Image.FromFile(file)
            nombre += 1

            Dim a As New ListViewItem
            a.Text = file
            a.ImageIndex = nombre

            ListView1.Items.Add(a)
        Next

    End Sub


Malheureusement sur Dim img As System.Drawing.Image = Image.FromFile(file) , j'ai une erreur qui me dit "Mémoire insuffisante"...

Si quelqu'un sait m'aider ça serait sympa!
Afficher la suite 

Votre réponse

6 réponses

Messages postés
417
Date d'inscription
vendredi 22 février 2008
Dernière intervention
7 janvier 2018
0
Merci
Bonjour titwawa

Tu semble être en vb.net ..
Des pistes a suivre ...
Déjà pour les questions d'image oriente toi vers les sources de cs_Le Pivert qui a produit beaucoup d'exemples

Si "Mémoire insuffisante"... c'est que tu intègre surement bcp trop de chose dans ton listview

1, Déjà essaye de créer des filtres comme les extensions ou le format d'image, la date de création (année, mois semaine ..) etc
Tu aura déjà un premier choix qui limitera ensuite la taille de ton listview

2, Tu peux également travailler sur les thumbnails
Soit tu les fabriquent
http://codes-sources.commentcamarche.net/source/100271-redimensionner-une-image-en-cm

Soit tu les produit par un logiciel libre
http://www.01net.com/telecharger/windows/Multimedia/albmums_et_visionneuses/fiches/21922.html

Il existe aussi une piste qui serait d'essayer de récupérer ceux produit automatiquement par windows (fichier thumbs.db ) mais les extraire n'est pas simple.
C'est un objet OLE caché dans chaque répertoire

Piste a suivre
http://fr.openclassrooms.com/forum/sujet/utiliser-thumbs-db-17383

3, Si tu sélectionne une photo dans ton listview regarde du coté de la Propriétée Tag du Listview ..
Cette propriétée peut intégrer tous types d'objets (chemin)

Bonne Prog CGSI3


--
Commenter la réponse de CGSI3
0
Merci
Merci CGSI3, je teste ça tout de suite, et vous tiens au courant du résultat.
Commenter la réponse de titwawa
0
Merci
@CGSI3 : J'ai bien réussi à afficher mes images dans mon listView en filtrant seulement sur les images "bmp" et "jpg".

Maintenant, le soucis c'est qu'il affiche uniquement le chemin de l'image et non une icone. Savez-vous comment procéder?

Et dans le même registre, lorsque l'utilisateur clique sur une image dans le listeView, comment peut-on l'afficher dans une pictureBox?

Merci d'avance
Commenter la réponse de titwawa
Messages postés
5599
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,

voilà exactement ce que tu recherches

http://codes-sources.commentcamarche.net/source/54239-trieur-de-photos

Bonne programmation

Amitiés à CGSI3
Commenter la réponse de cs_Le Pivert
Messages postés
417
Date d'inscription
vendredi 22 février 2008
Dernière intervention
7 janvier 2018
0
Merci
Voici un morceau de code d'une de mes archives
Ce code permet d'extraire d'un arraylist d'Objet qui possède de nombreuses propriétées dont un .Name et une .Image un listview.

Donc ça reste un peu abstrait mais cela vous donnera la voie a suivre

   Public Sub InitListview(ByRef L As ListView, ByRef Ar As Arraylist,Optional ByVal Clear As Boolean = True, Optional ByVal Taille As Integer = 128)
        L.BeginUpdate()
        If Clear Then L.Items.Clear()
        Try
            Dim imageList As New ImageList()
            imageList.ColorDepth = ColorDepth.Depth32Bit
            imageList.ImageSize = New Size(Taille, Taille)
            Dim Cp As Integer = 0
            For Each H In Ar
                Dim A As New ListViewItem
                A.Text = H.Name
                A.Tag = H
                A.ImageIndex = Cp
                imageList.Images.Add(H.Image.image)
                L.Items.Add(A)
                Cp = Cp + 1
            Next
            L.LargeImageList = imageList
            L.TileSize = New Size(Taille, Taille)
            L.View = View.LargeIcon
        Catch ex As Exception
            ' traitement du probleme
        End Try

        L.EndUpdate()
    End Sub


Vous laisse étudier cette ligne : A.Tag = H
Cela permet de récupérer l'objet sélectionné dans le listview

Amitiés à toi ami Pivert

Bonne prog
CGSI3
Commenter la réponse de CGSI3
0
Merci
@cs_Le Pivert : Effectivement, c'est exactement ce que je recherchais! Merci!!

@CGSI3 : Merci pour l'aide que tu m'as donnée. ça m'a bien été utile mais le projet qu'on vient de me montrer répond à toutes mes questions.

Bonne journée à vous
Commenter la réponse de titwawa

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.