Bonjour,

je sèche sur une erreur qui n'a pas l'air simple à comprendre.

je suis en train de créer un programme dans lequel je pourrais renommer mes images selon leur date de prise de vue.
pour ce faire, je sélectionne le dossier et parcours les fichiers de ce dossier.
si c'est du ".jpg" j'utilise image.fromfile("blabla.jpg") pour récupérer cette info.
Cela fonctionne sur des petits dossiers, mais j'en ai un pour lequel ça plante, vers la 40é image parcourue. Le message d'erreur indique : OutOfMemoryException

Or, cette image n'est pas plus grosse que les autres ( elles font dans ce dossier environ 2,9Mo chaque). Quand je renomme l'image qui a "planté" le programme pour la faire passer avant dans la boucle, ça fonctionne puis c'est une nouvelle image, tjrs vers la 40e position qui plante. ??

C'est vraiment un pbm de mémoire ?

Help. Jeremy

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        ListV1_initialize()
 
        Dim folderbrowser As New FolderBrowserDialog
        If folderbrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
 
            Dim folder = New System.IO.DirectoryInfo(folderbrowser.SelectedPath)
            Dim folderFi As IO.FileInfo() = folder.GetFiles("*.*")
            Dim Fi As IO.FileInfo
 
            Dim arr(5) As String
            Dim itm As ListViewItem
 
            Dim img As Image
            Dim prop As PropertyItem
            Dim sDate As String
            Dim dateTimeOriginal As DateTime
 
 
 
            For Each Fi In folderFi
 
                arr(0) = Fi.Name
                arr(1) = Math.Round((Fi.Length) / 1024, 0)
                arr(1) = Format(Int(arr(1)), "# ### ###") & " Ko"
                arr(2) = Fi.Extension
                arr(3) = Fi.CreationTime
 
                'si le fichier est une image, je lis son EXIF, sinon je sors.
                If arr(2) = "JPG" Then
                    'utilisation de system.drawing.imaging 
                    'img = Image.FromFile(Fi.FullName) 'recupere le chemin complet de l'image pour la date_prise_de_vue 
                    prop = img.GetPropertyItem(&H9003)
                    sDate = Encoding.ASCII.GetString(prop.Value, 0, prop.Len).TrimEnd(Chr(0))
                    dateTimeOriginal = DateTime.ParseExact(sDate, "yyyy:MM:dd HH:mm:ss", Nothing)
                    arr(4) = dateTimeOriginal
 
 
                Else
 
                    arr(4) = " not a pic"
 
                End If
 
                itm = New ListViewItem(arr)
                ListV1.Items.Add(itm)
                ' msg pour visualiser où ca plante     MsgBox(arr(0))
 
            Next
 
 
 
        End If
 
 
    End Sub