Trouver une ressource
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.
|
|
|
|
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;
|
|
|
|
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
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|