Page 1 sur 1

Acquition image avec un scanner ?

Publié : jeu. 05/avr./2018 14:52
par Fig
Sous windows, je souhaite récupérer une version numérique d'un document papier A4 via un scanner et traiter l'image par un programme en Pb.

Connaissez vous un moyen de faire acquisition via scanner d'une image ? Y a t'il une api particulière pour appeler l'interface du scanner fournie par le fabricant et récupérer l'image scannée ??

Re: Aquision image avec un scanner ?

Publié : jeu. 05/avr./2018 15:46
par case
souvent c'est twain pour les scanners

Re: Acquision image avec un scanner ?

Publié : jeu. 05/avr./2018 15:47
par GallyHC
Bonjour,

Je ne sais pas si ça fonctionne encore mais, il y a 10 ans et sur VB, on utiliser la dll "TWAIN" ou un truc comme cela. sa donne des pistes?

Cordialement,
GallyHC

Re: Aquision image avec un scanner ?

Publié : jeu. 05/avr./2018 18:05
par falsam
Case et Gally l'ont dit deux fois : twain.dll avec ce code.

■ L'objectif du code est simple
- Selection du scanner à faire au moins une fois.
- Acquisition de l'image
- Sauvegarde de l'image sous la forme scan + compteur + .bmp
- Affichage de l'image avec l'application prédéfinie de lecture d'image.

Code : Tout sélectionner

EnableExplicit

Enumeration window
  #mf  
EndEnumeration

Enumeration library
  #Library
EndEnumeration

Enumeration gadget
  #mfSelect
  #mfScan
EndEnumeration

Global IsAvailable, SelectImageSource, AcquireToFilename

;Plan de l'application
Declare Start()
Declare TWAINSelect()
Declare TWAINSCan()
Declare Exit()

Start()

Procedure Start()
  If OpenLibrary(#Library, "Twain32d.dll")
    
    IsAvailable = GetFunction(#Library, "TWAIN_IsAvailable")
    
    SelectImageSource = GetFunction(#Library, "TWAIN_SelectImageSource")
    AcquireToFilename = GetFunction(#Library, "TWAIN_AcquireToFilename")
    
  Else
    MessageRequester("Error","Could Not Open DLL",#MB_ICONERROR)
    exit()  
  EndIf
  
  If IsAvailable
    OpenWindow(#mf, 0, 0, 800, 600, "Twain.dll", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    ButtonGadget(#mfSelect, 10, 10, 190, 30, "Select TWAIN Source")
    ButtonGadget(#mfScan, 210, 10, 190, 30, "Scan!")
    
    ;Triggers
    BindGadgetEvent(#mfSelect, @TWAINSelect())
    BindGadgetEvent(#mfScan, @TWAINScan())
    BindEvent(#PB_Event_CloseWindow, @Exit())
  Else
    MessageRequester("Error", "Communication problem with the driver")
    Exit()
  EndIf
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure TWAINSelect()
  CallFunctionFast(SelectImageSource, WindowID(#mf))
EndProcedure

Procedure TWAINSCan()
  Static CountScan
  Protected FileName.s = "scan" + Str(CountScan) + ".bmp"
  
  CallFunctionFast(AcquireToFilename, WindowID(#mf), Ascii(FileName))
  RunProgram(FileName)
  
  CountScan + 1
EndProcedure

Procedure Exit()  
  End
EndProcedure
:arrow: Twain.dll + code sur github https://github.com/pbcodex/twain/archive/master.zip

:arrow: Site officiel de Twain https://www.twain.org/

Re: Acquition image avec un scanner ?

Publié : sam. 07/avr./2018 8:25
par Ar-S
topic nettoyé

Re: Acquition image avec un scanner ?

Publié : jeu. 24/mai/2018 10:08
par Fig
Je cherche la documentation sur les fonctions disponibles (notamment en lien avec le scan via chargeur).
Auriez vous un lien par hasard ?

Re: Acquition image avec un scanner ?

Publié : jeu. 24/mai/2018 11:52
par Ollivier
En anglais et pour Python (donc convertible) :
http://www.twainmodule.sourceforge.net
Et en anglais en C :
https://twain.org/specification/archive/

Re: Acquition image avec un scanner ?

Publié : jeu. 24/mai/2018 14:06
par Fig
Parfait je vais regarder cela. Merci Ollivier.