Dossier d'images, Listview et PictureBox

Résolu
titwawa - 12 mai 2014 à 10:52
 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!

6 réponses

CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
12 mai 2014 à 11:11
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


--
0
Merci CGSI3, je teste ça tout de suite, et vous tiens au courant du résultat.
0
@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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
12 mai 2014 à 11:49
Bonjour,

voilà exactement ce que tu recherches

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

Bonne programmation

Amitiés à CGSI3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
Modifié par CGSI3 le 12/05/2014 à 12:49
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
0
@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
0
Rejoignez-nous