[REF] Wiki Page 11 de MichelXld

MichelXld

XLDnaute Barbatruc
Les sujets abordés dans cette page
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 :​
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 Userform​
    Appliquer une rotation à 90 , 180 ou 270°​
    Appliquer un retournement Vertical ou Horizontal​
    Dé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'image​
    Sauvegarder l'image modifiée​
    Lien supprimé
    Lien supprimé

  • 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
    Ce lien n'existe plus
    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​

  • 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 premiere​
    Ce 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 verticalement​
    Ce 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 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)
    Ce lien n'existe plus

  • 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​

    Lien supprimé

  • 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").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 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é
    Ce lien n'existe plus
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 un modérateur:

Discussions similaires

Réponses
6
Affichages
295

Statistiques des forums

Discussions
312 164
Messages
2 085 875
Membres
103 007
dernier inscrit
salma_hayek