TRIEUR DE PHOTOS

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 9 mai 2012 à 18:27
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 22 mai 2012 à 16:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
22 mai 2012 à 16:39
Une nouvelle mis à jour avec les corrections qui m'ont été signalées. Je tiens à vous remercier tous de votre collaboration.
@+ Le Pivert
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
22 mai 2012 à 09:49
Fausse manoeuvre c'est parti avant que j'ai terminé.
J'ai essayé ton code pour définir les espaces entre les miniatures. Cela fonctionne très bien.
Une petite rectification en cas d'Option Strict On:

'espace entre les miniatures
Public Sub SetSpacing(ByVal x As Int16, ByVal y As Int16)
SendMessage(lstvItem.Handle, LVM_SETICONSPACING, CType(0, IntPtr), CType(x * 65536 + y, IntPtr))
lstvItem.Refresh()
End Sub

mettre ceci à cet endroit:

'on affiche les images en miniature
SetSpacing(150, 150) 'espace entre les miniatures
If Me.lstvItem.Items.Count <> 0 Then
For i = 0 To imglst.Images.Count - 1
' imglst.Images.Item(i) = Image.FromFile(imgPaths(i)).GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)'sans ThumbExtract.dll: plus lent
imglst.Images.Item(i) = ExtractImage(imgPaths(i), 100, 100) 'avec ThumbExtract.dll: plus rapide
lstvItem.RedrawItems(i, i, True)
Application.DoEvents()
Next
End If
Encore merci et au plaisir de te relire
@+ Le Pivert
PS j'espère que tu pourras lire ce commentaire, car il y a des problème de rafraichissement de cache!
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
22 mai 2012 à 09:43
Bonjour banana32,
Merci pour le commentaire et la note.
Utilisateur anonyme
21 mai 2012 à 23:56
Bonsoir Le Pivert,
Comme d'habitude, une très jolie source.

Dans un projet récent, j'ai utilisé comme toi les listview en mode LargeIcon et j'ai trouvé que les images étaient beaucoup trop espacées. Tant verticalement qu'horizontalement.
Alors j'ai trouvé une astuce sur un site (je ne sais plus où) pour les disposer à loisirs.
Voici le code à mettre dans les déclarations :

Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Const LVM_FIRST As Integer = &H1000
Const LVM_SETICONSPACING As Integer = LVM_FIRST + 53

Voici la sub à rajouter dans le code :
Public Sub SetSpacing(ByVal x As Int16, ByVal y As Int16)
SendMessage(ListView1.Handle, LVM_SETICONSPACING, 0, x * 65536 + y)
ListView1.Refresh()
End Sub

Et donc avant de remplir la listview il suffit d'écrire par exemple :
SetSpacing(150, 170)

Ca vaut le coup d'essayer ;)
Je met 7/10 pour t'encourager dans tes efforts.
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 mai 2012 à 11:10
Salut,
Merci d'avoir souligné le problème rencontré par les possesseurs de vista/seven à l'ouverture. Ils pourront corriger eux même.
Pour les points blancs sur certaines miniatures, je n'ai pas eu ce problème. Essayer d'ouvrir les miniatures sans la ThumbExtract.dll:
imglst.Images.Item(i) = Image.FromFile(imgPaths(i)).GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)'sans ThumbExtract.dll: plus lent
ou de diminuer les miniatures en corrigeant le code:
imglst.Images.Item(i) = ExtractImage(imgPaths(i), 80, 80) 'avec ThumbExtract.dll: plus rapide
et dans l'imagelist:ImageSize: 80;80.
Pour la personnalisation, vous pouvez supprimer les PictureBox (c'est surtout pour le fun) et les remplacer par un menu contextuel sur la Listview. J'ai mis le code dans Private Sub save() sur les images bmp et gif:
'enregistrer l'image en tant qu'image bmp
Dim bmp As New Bitmap(chemin & nomimage & ext)
bmp.Save(chemindestination & "" & nomimage & FileTypes.Text, System.Drawing.Imaging.ImageFormat.Bmp)
il suffit de l'adapter aux autres formats.
Pour le style du code, j'ai comme références les programmes de vbFrance. Je n'ai fait aucune étude de programmation.
@+ Le Pivert
bj33 Messages postés 145 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 1 mai 2012
21 mai 2012 à 03:17
Salut

Attention à ceci avec vista/seven

opendir.RootFolder = Environment.SpecialFolder.MyDocuments

Il n'est pas possible de remonter la racine, pour ceux qui comme moi ne change pas les racines par défaut, donc, on reste dans le répertoire documents. Sous vista ou Seven, le répertoire "Mes documents" ne contient pas les dossiers physiques mais des liens(pour les SpecialFolder). Le mieux, c'est une racine qui contient tout les répertoires, My.Computer ou directement le répertoire images ou un autre mais pas celui là.

Est-il possible de supprimer les points blancs sur certaines miniatures? Paramètrages?

Sinon, c'est une très bonne base à personnaliser. J'utilise VS10 et j'ai donc converti la solution, qui veux le projet converti, demande. Mais il est facile de convertir avec VS 10, c'est une source débutant, on ouvre le sln en passant par le menu fichier/ouvrir de Visual Studio et le convertisseur fait le reste. 8 pour le travail et le partage utile, pas pour le style du code;)
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 mai 2012 à 19:18
c'est pas faux ! tout à l'air d'avoir déjà été fait et bien mieux que nous autres... Mais bon, nous sommes là aussi pour nous divertir en programmant. bonne continuation et si tu veux des idées je peux peut être aider ^.^
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 mai 2012 à 18:53
Il fallait lire: "Le plus dure c'est de trouver des idées nouvelles! "
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 mai 2012 à 18:52
Bonjour ADN56,
Content de te relire. Merci pour le commentaire et la note. Le plus dire c'est de trouver des idées nouvelles!
@+ Le Pivert
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 mai 2012 à 18:27
clair, net, précis, sympa ! comme d'habitude (:

juste une chose :
-le "case" type de fichier est pas très jolie je trouve ?
-vbNewLine => environnement.newligne c'est plus net ^^

au plaisir de relire tes codes, amicalement ADN
Rejoignez-nous