Les sujets abordés dans cette page Utiliser la librairie Windows Image Acquisition Automation Library v2.0 depuis Excel. |
Généralités Excel - page 1
Ce qui touche aux userforms - page 2
Piloter d'autres applications depuis Excel - page 3
Fonctions, événements, dates et calendriers - page 4
Formules, audits, répertoires et fichiers - page 5
Doublons, tris et filtres, variables, fichiers fermés, Access - page 6
Commentaires, gestion des erreurs, aide en ligne, recherches, tableaux, pages html, PC et système d'exploitation - page 7
Les objets dans le feuille, liens hypertextes, formats, Visual basic editor, chaines de caractères, modules de classe- page 8
Les Tableaux et graphiques Croisés Dynamiques, fichiers XML - page 9
Le Publipostage Word / Excel - page 10
Librairie Windows Image Acquisition Automation Library v2.0 - page 11
Ce qui touche aux userforms - page 2
Piloter d'autres applications depuis Excel - page 3
Fonctions, événements, dates et calendriers - page 4
Formules, audits, répertoires et fichiers - page 5
Doublons, tris et filtres, variables, fichiers fermés, Access - page 6
Commentaires, gestion des erreurs, aide en ligne, recherches, tableaux, pages html, PC et système d'exploitation - page 7
Les objets dans le feuille, liens hypertextes, formats, Visual basic editor, chaines de caractères, modules de classe- page 8
Les Tableaux et graphiques Croisés Dynamiques, fichiers XML - page 9
Le Publipostage Word / Excel - page 10
Librairie Windows Image Acquisition Automation Library v2.0 - page 11
Utiliser la librairie Windows Image Acquisition Automation Library v2.0 depuis Excel
WIA est un composant très complet qui permet de manipuler les images.
Les informations et exemples suivants sont en partie issus des samples VB6 fournis lors du téléchargement de la librairie WIA (wiaaut.dll) et que j'ai essayé d'adapter pour une utilisation depuis Excel
Les propriétés générales du WIA :
Accéder aux propriétés d’un fichier image.
Lire et écrire les fichiers image et leurs propriétés dans une base de données.
Manipuler les images : Rotation, Retournement, Décomposition des frames d'une image(par exemple d'un GIF animé) …
Modifier les pixels incluant les valeurs alpha.
Gérer les Images prises par une webCam.
Visualiser les images des webCam connectées à votre PC.
La Bibliothèque WIA est principalement conçue pour gérer les formats d'image PNG, BMP, JPG, GIF et TIFF .
Les autres formats sont à tester en fonction de votre système d'exploitation.
Téléchargez la librairie si elle n'est pas installée sur votre poste :
Puis suivez les conseils d'installation fournis dans le fichier d'aide readMe.txt
Configuration minimale : Windows XP
- Un exemple pour gérer les images :
Choisir une image sur le PC et l'afficher dans un UserformAppliquer une rotation à 90 , 180 ou 270°Appliquer un retournement Vertical ou HorizontalDécomposer les frames d'une image(par exemple d'un GIF animé)Créer une miniature dans l'image (Stamp)Afficher les propriétés détaillées de l'imageSauvegarder l'image modifiéeLien suppriméLien supprimé
- Vérifier si un fichier GIF est de type animé ou standard
Sub controleFormatImageGIF()Dim objImage As ObjectSet objImage = createObject("WIA.imageFile")objImage.loadFile ("C:\fichierImage.gif")If objImage.isAnimated ThenmsgBox "Gif animé"ElsemsgBox "Gif standard"End IfEnd Sub
- Comment utiliser les filtres
Ce lien n'existe plusEn complément, voici une macro qui permet d'afficher une description générale de tous les filtres utilisés dans WIASub listerInformationsGeneralesFiltres()Dim x As IntegerDim IP As imageProcessSet IP = createObject("WIA.imageProcess")For x = 1 To IP.filterInfos.CountDebug.Print "--> " & IP.filterInfos(x).Name & ":"Debug.Print IP.filterInfos(x).DescriptionDebug.Print vbCrLf & "**" & vbCrLf & vbCrLfNext xEnd Sub
- Redimensionner une image
Ce lien n'existe plus
- Combiner deux images en une .
La 2eme image(de plus petite dimension) va s'incruster dans la premiereCe lien n'existe plus
- Fusionner Deux images verticalement .
Cet exemple permet de créer une nouvelle image à partir de 2 images existantes : Les 2 images sont jointes bout à bout verticalementCe lien n'existe plus
- Couper/Rogner une image
Ce lien n'existe plus
- Afficher les dimensions et la résolution d'une image
Sub dimensionsImage_V02()Dim Img As ObjectSet Img = createObject("WIA.imageFile")Img.loadFile ("C:\Documents and Settings\michel\dossier\fourmiz.jpg")msgBox "Largeur = " & Img.Width & vbCrLf & _"Hauteur = " & Img.Height & vbCrLf & _"Resolution horizontale = " & Img.horizontalResolution & vbCrLf & _"Resolution verticale = " & Img.verticalResolutionEnd Sub
- Lister les propriétés d'une image
Dim Img As imageFileDim P As PropertyDim S As StringSet Img = createObject("WIA.imageFile")Img.loadFile ("C:\Documents and Settings\michel\dossier\DSC00076.JPG")For Each P In Img.PropertiesS = P.Name & "(" & P.PropertyID & ") = "If P.isVector ThenS = S & " - vector data not emitted - "elseIf P.Type = rationalImagePropertyType ThenS = S & P.Value.Numerator & "/" & P.Value.DenominatorelseIf P.Type = stringImagePropertyType ThenS = S & """" & P.Value & """"ElseS = S & P.ValueEnd IfDebug.Print SNext
- Créer un nouveau TAG "Titre" dans une image
Cet exemple utilise le filtre Exchangeable Image File (EXIF)Sub creation_TAG_TITRE_copieImage()Dim Img As imageFileDim IP As imageProcessDim v As VectorDim i As IntegerSet Img = createObject("WIA.imageFile")Set IP = createObject("WIA.imageProcess")Set v = createObject("WIA.Vector")Img.loadFile "C:\Documents and Settings\michel\dossier\DSC00076.JPG"IP.Filters.Add IP.filterInfos("Exif").FilterIDIP.Filters(1).Properties("ID") = 40091IP.Filters(1).Properties("Type") = vectorOfBytesImagePropertyTypev.setFromString "Test de TAG 'TITRE' avec utilisation de WIA v2.0"IP.Filters(1).Properties("Value") = vSet Img = IP.Apply(Img)Img.saveFile "C:\Documents and Settings\michel\dossier\DSC00076_EXIF.JPG"End SubFaites un clic droit sur l'image pour voir le résultatOption PropriétésOnglet Résumé (Description)
- Créer une image compressée à partir d'un autre fichier
Sub compressionImage()Dim Img As imageFileDim IP As imageProcessSet Img = createObject("WIA.imageFile")Set IP = createObject("WIA.imageProcess")Img.loadFile "C:\Documents and Settings\michel\dossier\DSC00076.JPG"IP.Filters.Add IP.filterInfos("Convert").FilterIDIP.Filters(1).Properties("FormatID").Value = wiaFormatJPEGIP.Filters(1).Properties("Quality").Value = 50''Quality : valeurs possibles entre 0 et 100'Indiquez une valeur basse pour augmenter la compression'Set Img = IP.Apply(Img)Img.saveFile "C:\Documents and Settings\michel\dossier\DSC00076_Compressee.JPG"End Sub - Créer une image TIFF type multi-frame (multi-page)
Ce lien n'existe plus
- Gérer les Webcams
Ce nouvel exemple permet de :Lister les Webcam connectéesVisualiser la WebcamMettre la caméra en pauseAfficher quelques informationsEffectuer une capture d'imageEnregistrer l'image capturée sur le PC
Votre Webcam doit etre préalablement branchée avant d'afficher l'userForm.Remarque:Vous pouvez brancher plusieurs Webcams simultanément et ensuite sélectionner dans le Treeview celle qui vous interesse.Plus généralement , pour utiliser la webCam dans un userForm , rien de plus simple :Quand la librairie wiaaut.dll est installé sur votre poste,Cherchez les objets deviceManager Class et videoPreview Class dans les controles supplémentaires de la boite à outils .Insérez les 2 objets dans votre USF.Et ensuite utilisez cette procédure :Private Sub userForm_Initialize()deviceManager1.registerEvent wiaEventDeviceConnecteddeviceManager1.registerEvent wiaEventDeviceDisconnectedEnd Sub
Lien supprimé
- Capturer une image de la webCam
Dim Di As deviceInfoDim Dev As DevicePrivate Sub userForm_Initialize()deviceManager1.registerEvent wiaEventDeviceConnecteddeviceManager1.registerEvent wiaEventDeviceDisconnected'(1) correspond au premier objet connectéSet Di = deviceManager1.deviceInfos.Item(1)Set Dev = Di.ConnectIf Dev.Type = videoDeviceType ThenSet videoPreview1.Device = DevEnd IfEnd SubPrivate Sub commandButton1_Click()Dim Itm As ItemDim Img As imageFileSet Itm = Dev.executeCommand(wiaCommandTakePicture)If Not Itm Is Nothing ThenSet Img = Itm.TransferIf Not Img Is Nothing ThenSet Image1.Picture = Img.fileData.PictureEnd IfEnd If'pour enregistrer la capture sur le disque'Img.saveFile "C:\monimageTest_WIA_V02.jpg"End Sub
Dim i As Integer
For i = 1 To deviceManager1.deviceInfos.Count
msgBox deviceManager1.deviceInfos(i).Properties("Name").Value & _
vbCrLf & deviceManager1.deviceInfos(i).DeviceID
Next
- Lister les propriétés de la webCam connectée
'deviceManager1.deviceInfos.Item(1) correspond au premier objet connectéOption ExplicitDim Dev As DevicePrivate Sub userForm_Initialize()Dim Di As deviceInfodeviceManager1.registerEvent wiaEventDeviceConnecteddeviceManager1.registerEvent wiaEventDeviceDisconnected'(1) correspond au premier objet connecté'renvoie une erreur si aucun appareil n'est connectéSet Di = deviceManager1.deviceInfos.Item(1)Set Dev = Di.ConnectEnd SubPrivate Sub commandButton1_Click()Dim P As PropertyDim S As StringFor Each P In Dev.PropertiesS = P.Name & "(" & P.PropertyID & ") = "If P.isVector ThenS = S & " -vector of data-"ElseIf P.Type = stringPropertyType ThenS = S & """" & P.Value & """"ElseS = S & P.ValueEnd IfEnd IfDebug.Print SNextEnd Sub - Lister les types d'evenements pour l'appareil connecté
Ce lien n'existe plus
Toutes vos idees sont les bienvenues .

Dernière modification par un modérateur: