formateur informatique

Rotations sur des images en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Rotations sur des images en VBA Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Rotations sur des images en VBA Access

Lors des deux volets précédents, nous avons appris à manipuler des fichiers d'images en VBA Access. Nous sommes parvenus à récolter leurs propriétés et à leur infliger des redimensionnements à la volée. Ici, nous allons voir qu'il est aussi possible de les faire pivoter en leur soumettant des angles de rotation à respecter.

Base de données Access à télécharger
Pour poursuivre les travaux, nous avons tout d'abord besoin de récupérer la base de données de la visionneuse d'images au dernier indice.
  • Télécharger le fichier compressé rotations-images.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier réceptionné pour l'ouvrir dans Access,
  • Cliquer sur le bouton Activer le contenu du bandeau de sécurité pour libérer les ressources,
  • Dans le volet de navigation sur la gauche, double cliquer sur le formulaire intitulé visionneuse,
  • Sur le formulaire, cliquer sur le bouton matérialisé par l'icône d'une loupe,
  • Dans la boîte de dialogue qui suit, ouvrir un dossier contenant des images,
  • Puis, valider par le bouton Ok pour revenir sur le formulaire de la visionneuse,
Comme vous pouvez le voir, les photos du dossier sont automatiquement récoltées. La première s'affiche en grand au centre de la visionneuse. Les suivantes apparaissent en miniatures dans une barre latérale. Leurs propriétés respectives sont chaque fois résumées dans la barre horizontale, placée dans la partie inférieure du formulaire.

Formulaire VBA Access pour faire des rotations sur des photos

Sur la droite du formulaire, vous notez la présence de deux zones. Elles sont intitulées Retailler et Rotation. La première a fait l'objet du développement précédent. Elle permet de définir les nouvelles dimensions à attribuer à l'image en cours de lecture sur le formulaire.

La seconde est celle qui nous intéresse ici. Elle doit permettre de faire pivoter la photo en fonction d'un angle à préciser dans la zone de saisie prévue à cet effet.

La procédure VBA
Notre première cible consiste à créer la procédure de code à déclencher au clic sur le bouton intitulé Tourner. Il est placé sous la zone de saisie qui se nomme angle.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur le bouton Tourner pour le sélectionner,
  • Dès lors, activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton associé à son événement Au clic,
  • Dans la boîte de dialogue qui suit, choisir le Générateur de code et valider par Ok,
C'est ainsi que nous basculons dans l'éditeur de code VBA Access entre les bornes de la procédure événementielle tourner_Click.

Le code VBA que nous avons développé lors du précédent chapitre permet déjà de manipuler les images et de leur appliquer des opérations de transformations, des filtres. En conséquence, celui que nous devons produire ici est très similaire. Il est seulement question de lui apporter quelques légères retouches.
  • Sélectionner tout le code VBA placé entre les bornes de la procédure transformer_Click,
Elle est normalement placée juste en-dessous de celle que nous nous apprêtons à implémenter.
  • Copier ce code (CTRL + C),
  • Puis, le coller (CTRL + V) dans la procédure tourner_Click,
Private Sub tourner_Click()
Dim objImg As Object: Dim imgOp As Object

Set objImg = CreateObject("WIA.ImageFile")
Set imgOp = CreateObject("WIA.ImageProcess")

imgOp.Filters.Add imgOp.FilterInfos("Scale").FilterID 'Opération de redimensionnement
imgOp.Filters(1).Properties("MaximumWidth") = nLarge.Value 'Filtre Largeur
imgOp.Filters(1).Properties("MaximumHeight") = nHaut.Value 'Filtre Hauteur

objImg.LoadFile nom_dossier & "\" & nomF 'Chargement de l'image
Set objImg = imgOp.Apply(objImg) 'On applique le redimensionnement selon les valeurs saisies
Kill nom_dossier & "\" & nomF 'On détruit le fichier source pour le remplacer sans erreur et message
objImg.SaveFile nom_dossier & "\" & nomF 'On le sauvegarde sous le même nom

demarrage
End Sub


Dans ce code, nous déclarons deux objets pour instancier deux classes (WIA.ImageFile et WIA.ImageProcess). La première permet de manipuler les images. La seconde permet de lui appliquer des filtres (Filters). Ce que nous faisons dans dans la foulée pour le redimensionnement (Scale).

Faire pivoter les images
Ici, ce filtre n'est plus d'actualité. Nous devons remplacer ces trois lignes pour opérer une rotation.
  • Remplacer ces trois lignes par les deux suivantes :
Private Sub tourner_Click()
Dim objImg As Object: Dim imgOp As Object

Set objImg = CreateObject("WIA.ImageFile")
Set imgOp = CreateObject("WIA.ImageProcess")

imgOp.Filters.AddimgOp.FilterInfos("RotateFlip").FilterID 'Opération de rotation
imgOp.Filters(1).Properties("RotationAngle") = angle.Value 'Angle de la rotation


objImg.LoadFile nom_dossier & "\" & nomF 'Chargement de l'image
Set objImg = imgOp.Apply(objImg) 'On applique le redimensionnement selon les valeurs saisies
Kill nom_dossier & "\" & nomF 'On détruit le fichier source pour le remplacer sans erreur et message
objImg.SaveFile nom_dossier & "\" & nomF 'On le sauvegarde sous le même nom

demarrage
End Sub


C'est le paramètre RotateFlip de la méthode FilterInfos qui indique la nature de la transformation. Et c'est ainsi, grâce à l'argument RotationAngle de la collection Properties de notre second objet que nous définissons l'angle de la rotation sur la valeur saisie par l'utilisateur dans la zone de texte.

Les lignes qui suivent ne changent pas. Nous chargeons l'image à transformer (LoadFile) en rappelant son chemin d'accès complet. Nous lui appliquons la rotation (Apply). Nous supprimons le fichier du disque (Kill) pour pouvoir le remplacer par l'image transformée et travaillée en mémoire (SaveFile).
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire Access (ALT + Tab),
  • Le fermer en cliquant sur la croix de son onglet,
  • Puis le rouvrir en double cliquant sur son nom depuis le volet de navigation,
  • Cliquer alors sur le bouton à la loupe,
  • Dans la boîte de dialogue, ouvrir un dossier contenant des images,
  • Cliquer sur le bouton Ok pour revenir sur la visionneuse,
  • Naviguer jusqu'à la photo à incliner,
  • Taper un angle de 90 par exemple puis cliquer sur le bouton Tourner,
Effets de rotation sur des images en VBA Access

Au rechargement, vous remarquez dans les miniatures, l'inclinaison de l'image ainsi transformée. Les angles doivent être ronds (90, 180, 270, 360), soit un multiple de 90.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn