Conversion et redimensionnement image dans Picturebox

ElChileno Messages postés 3 Date d'inscription vendredi 12 novembre 2010 Statut Membre Dernière intervention 3 décembre 2010 - 12 nov. 2010 à 18:39
ElChileno Messages postés 3 Date d'inscription vendredi 12 novembre 2010 Statut Membre Derniè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.

Merci d'avance pour vos réponses!

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
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:

http://www.developpez.net/forums/d171249/logiciels/microsoft-office/excel/macros-vba-excel/utiliser-librairie-windows-image-acquisition-automation-library-v2-0-excel/

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.

@+ Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
13 nov. 2010 à 08:14
J'ai oublié ce site qui explique très bien l'utilisation de la dll:wiaaut.dll

http://msdn.microsoft.com/en-us/library/ms630819

@+Le Pivert
0
ElChileno Messages postés 3 Date d'inscription vendredi 12 novembre 2010 Statut Membre Derniè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)!
0
ElChileno Messages postés 3 Date d'inscription vendredi 12 novembre 2010 Statut Membre Derniè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


Encore merci Le Pivert !!!!
0
Rejoignez-nous