begin process at 2008 05 16 06:40:59
1 173 219 membres
61 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : impossible de définir correctement la partie à scanner avec DelphiTwain [ Mutimédia / Image & Vidéo ] (ALSC)

impossible de définir correctement la partie à scanner avec DelphiTwain le 03/03/2008 12:58:45

ALSC
Bonjour,

J'utilise DelphiTwain avec Delphi 7.

Mon problème est le suivant :

Je n'arrive pas à définir la partie à scanner avec précision en utilisant la fonction "Twain.Source[...].EnableSource" (pour scanner).
Quel que soit le type d'unité que je choisisse avec "Twain.Source[...].SetICapUnits" (tuInches, tuCentimeters, tuPicas, tuPoints, tuTwips, tuPixels, tuUnknown), il reste sur tuInches.
De plus, en utilisant "Twain.Source[...].SetImageLayoutFrame(0, 0, 1.5, 1.5)", il ne prend pas les chiffres après la virgule.
Autrement dit, pour SetImageLayoutFrame, 1 ou 1,1 ou 1,5 ou 1,9 = 1 inch; 2 ou 2,1 ou 2,5 ou 2,9 = 2 inches et ainsi de suite.

Quelqu'un à t'il déjà rencontré ce problème ? et surtout à t'il une solution ?

Merci

ALSC

Re : impossible de définir correctement la partie à scanner avec DelphiTwain le 03/03/2008 18:56:02

f0xi
Membre Club
(Admin CS)

http://delphitwain.sourceforge.net/

regarde les exemples si tu ne l'as pas deja fait.

pense aussi a lire les exemples dans le CHM de l'archive.

n'utilisant jamais DelphiTWain ni même TWain en regle general ... je ne peu t'en dire plus.


deefsign.gif

Re : impossible de définir correctement la partie à scanner avec DelphiTwain le 03/03/2008 19:56:27

ALSC

Merci pour ta réponse, mais j'ai bien sur déjà regardé les exemples.

J'ai aussi retourné le CHM dans tous les sens, mais je n'ai rien trouvé.

Ce qui est dommage, c'est qu'il n'y ai pas d'exemple sur la manière de numériser sans utiliser l'interface Twain (ShowUI=false).

Peut-être que je me trompe dans l'ordre d'appel des méthodes, mais je ne pense pas.

A tout hasard, je laisse un exemple de ma source qui ne fonctionne pas:

if not DM.Twain.LoadLibrary then Exit;
if not DM.Twain.LoadSourceManager then Exit;
if not DM.Twain.Source[DM.TPRScanSourceIndex.AsInteger].LoadSource then Exit;
with DM.Twain.Source[DM.TPRScanSourceIndex.AsInteger] do
  begin
    TransferMode:=TTwainTransferMode(ttmMemory);
    SetIPixelType(tbdGray);
    SetIBitDepth(8);
    SetIXResolution(300);
    SetIYResolution(300);
    SetIndicators(false); //Censé masquer une fenêtre de progression qui s'affiche quand même
    SetICapUnits(tuCentimeters)); //Ca reste en Inches
    SetImagelayoutFrame(vLeft, vTop, vRight, vBottom);  //Ne prend que la partie entière des valeurs
    EnableSource(false, false); // paramètres: ShowUI, Modal - Modal à true ou false ne change rien, ça reste modal 
    while Enabled do Application.ProcessMessages;
  end;

Je tiens à préciser que celà ne provient pas du scanner qui fonctionne tres bien avec ShowUI.

Si personne n'a de solution, peut-être que quelqu'un pourrais m'indiquer un autre composant qui fonctionne ?


Encore merci

ALSC


Re : impossible de définir correctement la partie à scanner avec DelphiTwain le 04/03/2008 19:30:41

f0xi
Membre Club
(Admin CS)

function GetICapUnits(var Return: TTwainUnit;
      var Supported: TTwainUnitSet; Mode: TRetrieveCap
      {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;

function SetICapUnits(Value: TTwainUnit): TCapabilityRet;

appel GetICapUnits pour verifier deja si le peripherique supporte le truc.
verifie aussi le retour de fonction pour savoir si une erreur n'est pas survenue.

TCapabilityRet = (crSuccess, crUnsupported, crBadOperation, crDependencyError,
    crLowMemory, crInvalidState, crInvalidContainer);


essaye ça a la place de la ligne SetICapUnits();

case SetICapUnits(tuCentimeters) of
  crUnsuported : MessageDlg('Le peripherique ne supporte pas le systeme metrique!', mrWarning, [mbOk],0);
  crBadOperation : MessageDlg('Mauvaise manip mec!', mrWarning, [mbOk],0);
  crDependencyError : MessageDlg('Erreur de dependance, besoin de drogue ?', mrWarning, [mbOk],0);
  crLowMemory : MessageDlg('Rachete de la ram ... t'en a plus', mrWarning, [mbOk],0);
  crInvalidState : MessageDlg('Etat invalide, ça merde quelque part, sur, mais ou ?', mrWarning, [mbOk],0);
  crInvalidContainer : MessageDlg('Conteneur invalide ... forcement, ça marchera pas.', mrWarning, [mbOk],0);
end;




deefsign.gif

Re : impossible de définir correctement la partie à scanner avec DelphiTwain le 05/03/2008 13:39:06

ALSC


Merci beaucoup...

J'ai bien compris la leçon : pour résoudre un problème, ça ne sert à rien de tirer la gueule chacun de son côté, il faut dialoguer.

Fort de ce principe, j'ai demandé à mon scanner (comme tu me l'as conseillé) ce qu'il est capable de comprendre comme type d'unités... Et à mon grand étonnement, il m'a répondu "tuInches" et "tuPixels".

Je me suis dit qu'on était bien parti pour s'entendre...Mais rien à faire, le bougre continue à me chercher.

Quand je lui demande poliment de me numériser une zone en inches de p. ex. (0, 0, 1.8, 1.8), il continue à me numériser une zone de (0, 0, 1, 1) inches. En fait, il ne prend que la partie entière des coordonnées de la zone.

Voici le code :
SetICapUnits(tuInches));
SetImagelayoutFrame(0, 0, 1.8, 1.8);  //Ne prend que la partie entière des valeurs
EnableSource(false, false);

Comme tu as l'air de savoir leur parler, ne serait ce pas abuser de te demander pourquoi il me fait ça ?

Encore merci de bien vouloir jouer le rôle de médiateur entre moi et ce  de scanner.

ALSC


Classé sous : source, twain, définir, scanner, delphitwain

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS