I. Qu'est-ce que TWAIN ?▲
TWAIN est une norme pour les logiciels de gestion des appareils d'acquisition d'images (scanner, appareil photo numérique…) qui est largement utilisée sur les ordinateurs Windows. TWAIN permet d'accéder aux appareils d'acquisition d'images à partir d'un autre programme, par exemple à partir d'une application graphique ou de PAO. Cela signifie qu'au lieu de devoir créer une image de numérisation dans un programme séparé, de la sauvegarder, puis de l'ouvrir dans l'application graphique, l'exploitation du protocole TWAIN permet d'importer l'image directement dans l'application graphique hôte, ce qui permet de gagner du temps.
II. Comment exploiter Twain avec Delphi ?▲
Vous avez deux solutions à votre disposition :
- développer un composant en vous appuyant sur les indications du TWAIN Working Group ;
- utiliser un composant existant.
Si vous avez choisi la première solution, je vous souhaite bien du courage et votre parcours sur ce document s'arrêtera ici, sinon pour les autres vous pouvez télécharger le composant freeware TWainy qui fonctionne parfaitement de Windows 95 à XP.
III. Utilisation du composant▲
Une fois le composant installé (si vous ne savez pas installer un composant sous Delphi, vous pouvez consulter l'article « Comment installer un nouveau composant ? »), vous n'avez plus qu'à le déposer sur votre Form pour exploiter votre périphérique par le biais de l'interface Twain.
Pour comprendre l'utilisation du composant, nous allons développer une application de numérisation d'images avec les éléments suivants :
- un objet TToolbar avec deux boutons ;
- un objet TImage ;
- un objet Twainy .
Source du projet : exempletwain.zip (5 Ko).
III-A. Pour choisir la source du numériseur (scanner ou appareil photo numérique)▲
procedure
TForm1.ToolButton1Click(Sender: TObject);
begin
Twainy1.SelectSource;
end
;
À l'exécution du code, la fenêtre suivante apparaît :
|
III-B. Pour numériser l'image▲
procedure
TForm1.ToolButton2Click(Sender: TObject);
begin
Twainy1.Acquire;
end
;
Une fois la demande de numérisation envoyée, votre application TWAIN prend le relais pour l'acquisition de l'image. L'image est ensuite renvoyée à votre application et stockée dans la propriété ScannedBmp de l'objet Twainy.
Pour chaque image numérisée, pour récupérer l'image et effectuer votre traitement (enregistrement sur le disque, affichage sur un TImage, intégration dans une base de données…), vous devez utiliser l'évènement OnChangeBitmap de votre composant Twainy.
Par exemple, pour afficher le résultat dans un Timage, le code ressemblera à ceci :
procedure
TForm1.Twainy1ChangeBitmap(Sender: TObject);
begin
Image1.Picture.Bitmap := Twainy1.ScannedBmp;
end
;
Dans le cas où votre interface TWAIN permet de numériser plusieurs éléments en une fois (notamment avec un appareil photo numérique), l'évènement OnChangeBitmap sera déclenché pour chacun de ces éléments.