Conversion et redimensionnement image dans Picturebox
ElChileno
Messages postés3Date d'inscriptionvendredi 12 novembre 2010StatutMembreDernière intervention 3 décembre 2010
-
12 nov. 2010 à 18:39
ElChileno
Messages postés3Date d'inscriptionvendredi 12 novembre 2010StatutMembreDernière intervention 3 décembre 2010
-
3 déc. 2010 à 15:09
Bonjour!
Je suis actuellement en train de programmer un programme avec une visionneuse de photo. La photo est chargée depuis l'ordinateur via une box OpenFileDialog sur une Picturebox. Jusque la pas de problème, j'ai mis la propriété stretch et l'image se met à la bonne dimension. Néanmoins j'aimerais que l'image chargée soit une "copie" redimensionnée de l'image présente sur le pc pour des raisons d'utilisations de mémoire. Donc comment faire pour redimensionner cette image, la convertir (?), si oui en quel format pour garder une bonne qualité, et enfin l'afficher dans cette Picturebox.
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 12 nov. 2010 à 22:44
Bonjour,
Tu peux utiliser la
librairie-windows-image-acquisition-automation-library-v2-0
Voici un site qui t'explique sont fonctionnement. Cela fonctionne en VBA et en VB.Net:
Tu trouveras des exemples de programme ici sur VBFrance aussi. Je pense que la meilleur façon de procéder est de faire à chaque opération des fichiers temporaires que tu enregistres dans le dossier debug de ton application et que tu supprimes ensuite, pour ne garder que le fichier final. Pour ma part j'ai fait quelques sources sur le sujet si cela t'interesse.
ElChileno
Messages postés3Date d'inscriptionvendredi 12 novembre 2010StatutMembreDernière intervention 3 décembre 2010 13 nov. 2010 à 17:37
Merci Le Pivert, je vais jeter un œil à tout ça. En plus je crois que certains des filtres de cette librairie vont m'être utiles pour plus tard (j'avais prévu aussi d'inclure des petites fonctions de traitement d'image dans la suite de mon programme)!
ElChileno
Messages postés3Date d'inscriptionvendredi 12 novembre 2010StatutMembreDernière intervention 3 décembre 2010 3 déc. 2010 à 15:09
Up de ce message, la réponse de M. Pivert m'a été utile puisque j'ai utilisé un morceau de programme trouvé sur le site d'aide de Microsoft. Il faut tout d'abord installer la librairie wiaaut.dll. Ensuite voici mon morceau de code pour redimensionner l'image puis l'enregistrer en .jpg, ca marche très bien (une image d'une taille de 2Mo passe a 32Ko, on peut jouer avec la qualité au moment de la transformation en .jpg)
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Dim Img 'As Imagefile
Dim IP 'As ImageProcess
Dim IP2 'As ImageProcess
Img = CreateObject("WIA.ImageFile")
IP = CreateObject("WIA.ImageProcess")
IP2 = CreateObject("wia.imageprocess")
Img.LoadFile(OpenFileDialog1.FileName)
IP.Filters.Add(IP.FilterInfos("Scale").FilterID)
IP.Filters(1).Properties("MaximumWidth") = 400
IP.Filters(1).Properties("MaximumHeight") = 400
Img = IP.Apply(Img)
'redimensionne l'image
IP2.Filters.Add(IP.FilterInfos("Convert").FilterID)
IP2.Filters(1).Properties("FormatID").Value = WIA.FormatID.wiaFormatJPEG
IP2.Filters(1).Properties("Quality").Value = 70
Img = IP2.Apply(Img)
'conversion en .jpg
Img.savefile("<chemin du dossier ou vs voulez enregistrer l'image>")
PictureBox1.ImageLocation = "<chemin de l'image enregistrée>"
Else : Exit Sub
End If