|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 619
|
[REF] Wiki Page 11 de MichelXld
Les sujets abordés dans cette page :- Utiliser la librairie Windows Image Acquisition Automation Library v2.0 depuis Excel.
Lien vers la wiki page 1 :Les feuilles , Les graphiques , Les images , Les propriétés des classeurs , Les sauvegardes , Les formes automatiques , Aleatoire , Les barres d'outils et les barres de menus , Les boites de dialogues intégrées , Les classeurs . Lien vers la wiki page 2 : Les userforms : Les Checkbox , Les Labels , Les combobox , Les Commandbutton , Les Listbox ,Les Multipages , Les Frames , Les Textbox , Les imagesList , Les Treeview , Les Listview , Les Images , Les Webbrowser , Les calendriers , Les progressbar , Les Spreadsheet , Les Chartspaces , Les commonDialog , Les MSFlexGrid. Lien vers la wiki page 3 :Piloter d'autres applications depuis Excel , Piloter ( Word , Outlook , Power Point ) , Les fichiers texte Lien vers la wiki page 4 : Les fonctions mathématiques et trigonométriques , Les impressions , Les temporisations , Les fonctions , Les evenements , Excel , Les cellules , Copier & Coller , Les dates et les calendriers , Les spécificités Macintosh, Générer des fichiers Flash , Open Office Lien vers la wiki page 5 : Les formules Excel , Les audits de formules , Les répertoires et les fichiers . Lien vers la wiki page 6 : Les doublons , Les tris et les filtres , Les variables , Piloter les fichiers fermés (Excel , Access ,les fichiers DBF) . Lien vers la wiki page 7 : Les commentaires , La gestion des erreurs , L'aide en ligne Excel , Les recherches dans un classeur, Les tableaux , Les pages html et internet , Windows Media Player , Le PC et le systême d'exploitation ,Piloter Flash , les types de boucles. Lien vers la wiki page 8 : Piloter MSN Messenger et Windows Messenger , Les objets dans le feuille , Les liens hypertextes , Les formats , Visual basic editor , Les chaines de caractères , Les modules de classe. Lien vers la wiki page 9 : Les mises en forme conditionnelles , Les Tableaux et graphiques Croisés Dynamiques , Gérer les fichiers XML depuis Excel , Piloter Open Office depuis Excel. Lien vers la wiki page 10 : Le Publipostage Word / Excel. Lien vers la wiki page 11 : Utiliser la librairie Windows Image Acquisition Automation Library v2.0 depuis Excel.
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 : http://www.microsoft.com/downloads/details.aspx?FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29&DisplayLang=en Puis suivez les conseils d'installation fournis dans le fichier d'aide readMe.txt Configuration minimale : Windows XP - Vérifier si un fichier GIF est de type animé ou standard
Sub controleFormatImageGIF() Dim objImage As Object Set objImage = createObject("WIA.imageFile") objImage.loadFile ("C:\fichierImage.gif") If objImage.isAnimated Then msgBox "Gif animé" Else msgBox "Gif standard" End If End Sub
- Comment utiliser les filtres
Le lien sur le site Microsoft En complément, voici une macro qui permet d'afficher une description générale de tous les filtres utilisés dans WIA Sub listerInformationsGeneralesFiltres() Dim x As Integer Dim IP As imageProcess Set IP = createObject("WIA.imageProcess") For x = 1 To IP.filterInfos.Count Debug.Print "--> " & IP.filterInfos(x).Name & ":" Debug.Print IP.filterInfos(x).Description Debug.Print vbCrLf & "******************" & vbCrLf & vbCrLf Next x End Sub
- Combiner deux images en une .
La 2eme image(de plus petite dimension) va s'incruster dans la premiere Visualiser la macro
- 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 verticalement Visualiser la macro
- Afficher les dimensions et la résolution d'une image
Sub dimensionsImage_V02() Dim Img As Object Set 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.verticalResolution End Sub
- Lister les propriétés d'une image
Dim Img As imageFile Dim P As Property Dim S As String Set Img = createObject("WIA.imageFile") Img.loadFile ("C:\Documents and Settings\michel\dossier\DSC00076.JPG") For Each P In Img.Properties S = P.Name & "(" & P.PropertyID & ") = " If P.isVector Then S = S & " - vector data not emitted - " elseIf P.Type = rationalImagePropertyType Then S = S & P.Value.Numerator & "/" & P.Value.Denominator elseIf P.Type = stringImagePropertyType Then S = S & """" & P.Value & """" Else S = S & P.Value End If Debug.Print S Next
- 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 imageFile Dim IP As imageProcess Dim v As Vector Dim i As Integer Set 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").FilterID IP.Filters(1).Properties("ID") = 40091 IP.Filters(1).Properties("Type") = vectorOfBytesImagePropertyType v.setFromString "Test de TAG 'TITRE' avec utilisation de WIA v2.0" IP.Filters(1).Properties("Value") = v Set Img = IP.Apply(Img) Img.saveFile "C:\Documents and Settings\michel\dossier\DSC00076_EXIF.JPG" End Sub Faites un clic droit sur l'image pour voir le résultat Option Propriétés Onglet Résumé (Description)
- Créer une image compressée à partir d'un autre fichier
Sub compressionImage() Dim Img As imageFile Dim IP As imageProcess Set 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").FilterID IP.Filters(1).Properties("FormatID").Value = wiaFormatJPEG IP.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)
Visualiser la macro
- Gérer les Webcams
Ce nouvel exemple permet de : Lister les Webcam connectées Visualiser la Webcam Mettre la caméra en pause Afficher quelques informations Effectuer une capture d'image Enregistrer 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 wiaEventDeviceConnected deviceManager1.registerEvent wiaEventDeviceDisconnected End Sub Le lien sur le forum XLD
Le fichier zippé
- Capturer une image de la webCam
Dim Di As deviceInfo Dim Dev As Device Private Sub userForm_Initialize() deviceManager1.registerEvent wiaEventDeviceConnected deviceManager1.registerEvent wiaEventDeviceDisconnected '(1) correspond au premier objet connecté Set Di = deviceManager1.deviceInfos.Item(1) Set Dev = Di.Connect If Dev.Type = videoDeviceType Then Set videoPreview1.Device = Dev End If End Sub Private Sub commandButton1_Click() Dim Itm As Item Dim Img As imageFile Set Itm = Dev.executeCommand(wiaCommandTakePicture) If Not Itm Is Nothing Then Set Img = Itm.Transfer If Not Img Is Nothing Then Set Image1.Picture = Img.fileData.Picture End If End If 'pour enregistrer la capture sur le disque 'Img.saveFile "C:\monimageTest_WIA_V02.jpg" End Sub
Lister le nom des appareils connectés ]
Dim i As Integer For i = 1 To deviceManager1.deviceInfos.Count msgBox deviceManager1.deviceInfos(i).Properties("Name").V alue & _ 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 Explicit Dim Dev As Device Private Sub userForm_Initialize() Dim Di As deviceInfo deviceManager1.registerEvent wiaEventDeviceConnected deviceManager1.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.Connect End Sub Private Sub commandButton1_Click() Dim P As Property Dim S As String For Each P In Dev.Properties S = P.Name & "(" & P.PropertyID & ") = " If P.isVector Then S = S & " -vector of data-" Else If P.Type = stringPropertyType Then S = S & """" & P.Value & """" Else S = S & P.Value End If End If Debug.Print S Next End Sub
- Lister les types d'evenements pour l'appareil connecté
Visualiser la macro
Si vous constatez des erreurs dans la page n'hesitez pas à m'en faire part .
Toutes vos idees sont les bienvenues .
Michel , Mise à jour le 20 Aout 2006
Dernière modification par MichelXld 08/03/2008 à 22h33.
|