Acquérir une image à partir d un scanner avec la bibliothèque de fonctions WIAAUT.DLL avec Delphi Table des matières



Documents pareils
Comment se connecter au dossier partagé?

Créer sa première base de données Access Partie 4/4 - Création d un état

Le poste de travail, les dossiers et les fichiers

Configurer un réseau domestique. Partager ses fichiers, ses dossiers et ses imprimantes sur tous ses PC.

Créer un album photo

Installation du Pilote de scanner

4. Personnalisation du site web de la conférence

[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

TalkToMe : votre première appli App Inventor Ce tutoriel vous aidera à construire une appli parlante qui peut sauvegarder des phrases sur demande.

Créez des étiquettes avec Microsoft Word et Excel (Versions Windows 10 et 11)

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

Paginer les données côté serveur, mettre en cache côté client

COURS WINDEV NUMERO 3

Créer sa première base de données Access Partie 3/4 - Création d un formulaire

Faire du publipostage par mails (mass-mailing) avec VTigerCRM

Les dossiers compressés (ou zippés)

Comment accéder à d Internet Explorer

Les sauvegardes de l ordinateur

Table des Matières. Présentation Installation... 2 Mise en route Les Icones... 5 Les paramètres

Manuel utilisateur Réservation d un Court via Internet. Procédure PC/Tablette/Smartphone

Application de lecture de carte SESAM-Vitale Jeebop

Sommaire. Promo 39 B WINDOWS 2003 SERVER PART 1

Windows 7, Configuration

Configuration du moteur de recherche de SharePoint Foundation 2013

Restauration des sauvegardes Windows Server sur 2008 R Sommaire

Atelier Découverte de Windows. janvier 2012

Qu est ce qu une bibliothèque?

Formation Informatique. Utiliser les périphériques informatiques

PLAN. Connexion Mac vers PC. mercredi 15 juillet 2009

Fiche Pratique. MAJ le 10/04/2013

Les différentes étapes à suivre pour la création d un feuillet

Clé USB. Quel type de données peut contenir une clé USB?

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Bulletin d information. MAJ le 10/04/2011

Numérisation. Copieur-imprimante WorkCentre C2424

AFTEC SIO 2. Christophe BOUTHIER Page 1


Manuel BlueFolder ADMINISTRATION

Installation DNS, AD, DHCP

REPETEUR SANS FIL N 300MBPS

Rangement du Menu Démarrer

Découvrez Windows NetMeeting

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

PAGE 1. L écran du logiciel d Open Office Draw. Barre de menu: Les commandes du logiciel

Editer un script de configuration automatique du proxy

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

TP1 : Initiation à Java et Eclipse

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Installation Eclipse Galileo. Groupe Entreprenant et Innovateur. France. Tutoriel. Programmation Mobile. Cours. Arón HERRERA PONTE. Coach.

Administration du site

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Votre site Internet avec FrontPage Express en 1 heure chrono

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Configuration de la Borne Interactive

Reporting Services - Administration

06/11/2014 Hyperviseurs et. Infrastructure. Formation. Pierre Derouet

Tutoriel pour la configuration des ipad et son «rattachement» au CG

Inscription de votre site sur Google Configuration du sitemap et de Webmaster Tools pour PrestaBox

TUTORIEL PAINTPOT. Louise Henninot - Anne- Cécile Patou - Julie Roquefort

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

INSTALLATION DBSWin En réseau

Travaux pratiques Bureau à distance et assistance à distance dans Windows 7

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Traitement par lot redimensionner des images

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Utilisation de l outil lié à MBKSTR 9

Guide pour le bon fonctionnement des applications académiques avec Internet Explorer 7.x

SimpleOCR, un logiciel gratuit de reconnaissance de caractères

FORMATION MULTIMÉDIA LVE

Leçon N 3 Quelques logiciels utiles

Comment récupérer toutes vos données perdues ou effacées gratuitement!

Importer un CD audio dans itunes

PROJET PERSONNALISÉ ENCADRÉ : N 6

Fiche Pratique. Etape 1 : Retrouver la clé depuis votre PC connecté.

FICHE TECHNIQUE. Linux Tutoriel. Installer une imprimante multifonction HP PSC 1315 sous Linux. TUTORIEL Starinux Imprimante multifonction HP PSC 1315

Table des matières A. Introduction... 4 B. Principes généraux... 5 C. Exemple de formule (à réaliser) :... 7 D. Exercice pour réaliser une facture

Module 16 : Les fonctions de recherche et de référence

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Déploiement d application Silverlight

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Activité 11 : Nuage de points ou diagramme de dispersion

Transférer une licence AutoCAD monoposte

BIRT (Business Intelligence and Reporting Tools)

Module 1 : Tableau de bord Excel * 2010 incl.*

Initiation à l utilisation de la micro-informatique Internet Explorer 7. Mode d emploi.

Remote Desktop Connection (RDC) devient Connexion Bureau à Distance (CBD)

Utilisation d objets : String et ArrayList

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

Les Utilisateurs dans SharePoint

Fiche Pratique. Présentation du problème. Installation du logiciel. Etape 1. MAJ le 17/10/2011

Installation et configuration du serveur syslog sur Synology DSM 4.0

COUR D APPEL DE LYON PROCEDURE INFORMATIQUE IMPRIMANTES. Imprimantes SAR de Lyon / Novembre 2007 Page 1 sur 14

Travailler en réseau intranet à l'école

EDIGRAPH CLASSIC GUIDE D'INSTALLATION. Installation Page 2 sur 15. SOGEDEX Parc d Activités de Pissaloup, 4, rue Edouard Branly, Trappes

Transcription:

Acquérir une image à partir d un scanner avec la bibliothèque de fonctions WIAAUT.DLL avec Delphi Table des matières Acquérir une image à partir d un scanner avec la bibliothèque de fonctions WIAAUT.DLL... 1 I Introduction... 2 II création du projet... 2 III Quelques codes utiles... 2 1. Sélection d un périphérique par l intermédiaire d une boîte de dialogue... 2 2. Obtenir des informations sur le périphérique... 3 3. Boîte de dialogue d acquisition d une image à partir d un scanner... 4 4. Obtenir des informations sur une image... 6 5. Imprimer une image en utilisant l objet de type ICommonDialog... 6 IV Conclusion... 7 1

I Introduction Dans ce tutoriel, vous allez apprendre à utiliser la bibliothèque de fonctions WIAAUT.DLL version 2.0 en utilisant Delphi. Je vais vous montrer comment acquérir une image en utilisant un scanner (imprimante HP PhotoSmart 6510). Nous allons détailler avec le plus de précision possible les objets Device et Image de même que nous allons utiliser les principales boîtes de dialogue communes mises à notre disposition par cette bibliothèque. Je dois vous dire que cet exemple a été écrit avec la version XE Starter de Delphi, mais il est possible d appliquer ces quelques lignes de code dans n importe quelle version même antérieure. II création du projet Nous devons dans un premier temps créer un nouveau projet. Dans votre éditeur créer un nouveau projet que vous appellerez comme vous le désirez. Nous allons devoir importer bibliothèques de type. Pour ce faire il suffit de sélectionner la commande de menu «importer un composant». Et de sélectionner ensuite l option «importer une bibliothèque de type». Dans la liste de bibliothèques de type qui vous est présentée, sélectionnez celle qui qui porte le nom : «Microsoft Windows image Acquisition Library v2.0». Validez la création d une unité dans votre répertoire de de développement. Une nouvelle fiche est créée et ajoutée à votre projet, elle se nomme : «WIA_TLB.pas». Vous êtes maintenant prêt à développer votre application. Nous allons maintenant voir comment utiliser cette bibliothèque pour interagir avec vos périphériques d acquisition d images. III Quelques codes utiles 1. Sélection d un périphérique par l intermédiaire d une boîte de dialogue La bibliothèque de fonctions met à notre disposition une série de boîtes de dialogue permettant d effectuer une série d actions les plus communes en seulement quelques lignes de programmation, ce qui allège bien le travail des développeurs. En effet suffit juste de taper les lignes de code suivantes pour afficher la boîte de sélection d un périphérique compatible avec WIA Version 2.0. A noter que les périphériques compatibles avec l ancienne version ne le sont plus avec la version 2.0. C est pour cette raison que j ai choisi mon scanner qui est compatible avec la version 2. 0. Voici le code qui permet d afficher la boîte de dialogue de sélection d un périphérique : cmndlg := CoCommonDialog.Create; connecteddev := cmndlg.showselectdevice(scannerdevicetype, true, true); Comme vous pouvez le constater on crée d abord un objet de type CoCommonDialog. Cet objet nous permet ensuite d avoir accès aux différentes boîtes de dialogue communes. Dans votre cas nous utilisons la fonction qui permet d afficher la boîte de sélection et qui retourne un objet de type IDevice. Ceci nous permet de garder en mémoire le périphérique sélectionné. Ainsi nous n aurons plus besoin de rouvrir cette boîte par la suite. 2

La fonction prend en argument : 1. Le type de périphérique que l on souhaite utiliser ; 2. Le deuxième paramètre de type boolean qui permet d ouvrir ou non la boîte de dialogue de sélection d un périphérique. 3. Le troisième paramètre lui aussi de type booléen permet d annuler ou non les erreurs survenues lorsque l utilisateur clique sur le bouton Annuler. Concernant les types de périphérique, nous avons : 1. ScannerDeviceType : pour sélectionner un périphérique de type scanner ; 2. CameraDeviceType : pour sélectionner un périphérique de type appareil photo numérique ; 3. VideoDeviceType : pour sélectionner un périphérique de type caméra vidéo ; 4. UnspecifiedDeviceType : pour sélectionner un périphérique ne répondant pas aux trois derniers types (type inconnu). Voici un aperçu de la boîte de dialogue qui apparaît à l écran : 2. Obtenir des informations sur le périphérique Vous pouvez, par l intermédiaire de votre objet de type IDevice (connecteddev ici), récupéré des informations concernant le périphérique que vous utilisez. Pour ce faire c est très simple, nous avons à notre disposition des types d objet IProperties et IProperty qui sont rattaché à notre objet de type IDevice. Il suffit d énumérer ces propriétés pour accéder à leur valeur. Voici le bout de code qui nous permet de récupérer les valeurs des propriétés Name, Type, Description, Port, Horizontal Optical Resolution, et Vertical Optical Resolution et pour finir WIA Version : 3

procedure TWIAConnectedDevice.getDeviceProperties; var count, i : integer; index : OleVariant; prop : IProperty; propvalue, propname : WideString; begin Properties := connecteddev.properties; count := Properties.Count; for i:=1 to count do begin index := Olevariant(i); prop := Properties.Item[index]; propvalue := String(prop.Get_Value); propname := prop.name; case AnsiIndexStr(propName, ['Description', 'Port', 'Name', 'Type', 'Vertical Optical Resolution', 'Horizontal Optical Resolution', 'WIA Version']) of 0 : setdescription(propvalue); 1 : setport(propvalue); 2 : setname(propvalue); 3 : setdevicetype(propvalue); 4 : sethorizontalopticalres(propvalue); 5 : setverticalopticalres(propvalue); 6 : setwiaversion(propvalue); avec Properties de type IProperties et prop de type IProperty. Dans un premier temps on récupère le nombre de propriétés grâce à la propriété count de l objet IProperties. On «scanne» ensuite toutes les propriétés par l intermédiaire de notre boucle (for to do). Dans cette boucle il est à noter que l on doit faire un changement de type pour l index qui est de type OleVariant dans la bibliothèque de fonctions. Autre chose à noter pour notre case of qui n accepte que des valeurs ordinales nous sommes obligés de passer par la fonction AnsiIndexStr et de lui passer en paramètre les noms des propriétés auxquelles nous voulons accéder pour obtenir leurs valeurs associées. C est un peu lourd, mais on ne peut pas faire autrement. Maintenant que l on a sélectionné un «device» et que l on a pu récupérer certaines de ces données, il est temps d acquérir une image à partir de celui-ci. 3. Boîte de dialogue d acquisition d une image à partir d un scanner Là encore la bibliothèque nous aide énormément en nous mettant à disposition une fonction permettant d afficher une boîte de dialogue permettant d acquérir une image scannée. Ceci s effectue toujours par l intermédiaire de l objet de type ICommonDialog. Voici le code a inséré pour effectuer cette action : 4

image := cmndlg.showacquireimage(scannerdevicetype, UnspecifiedIntent, MaximizeQuality, wiaformatbmp, false, false, true); Nous pouvons voir que cette fonction retourne un objet de type IImageFile. Comme vous pouvez le constater cette fonction nécessite quelques paramètres : 1. Le type de périphérique utilisé ; 2. Le deuxième paramètre permet de spécifier si l on veut faire une acquisition d image en niveaux de gris, en couleurs, ou de texte seulement. Lorsque la valeur est initialisée à «UnspecifiedIntent» la boîte s ouvre avec toutes ses options. 3. Le troisième paramètre permet de spécifier le niveau de qualité de l image scannée. 4. Le quatrième paramètre permet de spécifier le format de l image, ici on acquiert une image u format bmp. 5. Le cinquième paramètre permet de spécifier si on doit rouvrir la boîte de sélection du périphérique. 6. Le sixième paramètre permet de spécifier si on veut afficher la boîte de dialogue de paramétrages de l acquisition d image. 7. Le dernier permet de spécifier si l on prend en compte l annulation des erreurs. Voici l aperçu de la boîte de dialogue qui apparaît à l écran : 5

Une fois l objet IImageFile créé il suffit d utiliser sa fonction SaveFile pour l enregistrer sur le disque, comme ceci : image.savefile(sfilename); C est aussi simple que cela. 4. Obtenir des informations sur une image Maintenant que nous avons créé notre objet de type IImageFile, nous pouvons avoir accès à certaines de ces propriétés qui vont nous permettre d obtenir des informations intéressantes comme sa hauteur, sa largeur, ses résolution horizontales et verticales, son extension de fichiers, ainsi que son «Pixel depth». Il suffit d appeler les propriétés correspondantes de l objet : setheight(image.height); setwidth(image.width); setverticalresolution(image.verticalresolution); sethorizontalresolution(image.horizontalresolution); setfileextension(image.fileextension); setpixeldepth(image.pixeldepth); A noter que l objet de type IImageFile peut très bien être créé pour charger une image située localement sur le disque dur. Pour ce faire, nous devons appeler la fonction LoadFile qui prend en paramètre le chemin physique du fichier image à ouvrir : image := CoImageFile.Create; image.loadfile(sfilename); On prendra soin bien sûr de créer l objet par l intermédiaire du constructeur de la classe CoImageFile. Une fois l objet créé on peut demander les mêmes renseignements comme vu précédemment par l intermédiaire de ses propriétés. Nous allons voir dans un dernier temps comment imprimer une image, à partir d une boîte de dialogue encore mise à notre disposition par la bibliothèque. 5. Imprimer une image en utilisant l objet de type ICommonDialog Là encore notre tâche est encore grandement facilitée par l intermédiaire de cet objet. Il suffit d utiliser la fonction showphotoprintingwizard qui prend en argument le nom du fichier de l image à imprimer. Attention toutefois il y a une petite subtilité, il faut convertir le nom en OleVariant. Voici le code nécessaire pour imprimer une image en utilisant ce procédé : procedure TWIAScanner.printImage(sFileName : string); var OleFileName : OleVariant; begin OleFileName := sfilename; cmndlg.showphotoprintingwizard(olefilename); 6

Voici l aperçu de la boîte de dialogue qui apparaît à l écran : IV Conclusion Je vous ai proposé par l intermédiaire de ce tutoriel un aperçu des fonctions offertes par la bibliothèque de fonctions «Windows Image Acquisition Library». Elle est fournie avec un ensemble d objet et de fonctions facilitant vraiment la tâche de développement d applications orientées gestion de l acquisition de l image. Mais celle-ci ne s arrête pas là en effet elle propose de même un objet permettant de faire du traitement d image. Nous verrons ceci d un peu plus près dans un prochain tutoriel. 7