Hola a todos,
Estoy usando el componente TdelphiTwain para trabajar con el escaner. (descargado de
http://delphitwain.sourceforge.net)
El problema viene cuando obtengo la imagen, ya que cada usuario tiene un escaner distinto y segun el software del escaner o lo que el usuario toque, obtengo imagenes grandes o enormes. (segun la resulocion ppp)
He probado a ajustar las propiedades del escaner justo despues de que el usuario pulse el boton 'digitalizar' (o lo que sea) y se produzca la transferencia. Para el caso del software del asistente de windows para escaners funciona bien, pero para otros software, ej. hp me da error.
Me gustaria saber si alguien conoce la forma standard de controlar el escaner para que
siempre trabaje de la misma forma: 150 ppp y a color.
El codigo que tengo ahora es:
if Twain.LoadLibrary then
begin
{Load source manager}
Twain.SourceManagerLoaded := TRUE;
{Allow user to select source}
SelectedSource := Twain.SelectSource;
if SelectedSource <> -1 then
begin
Source := Twain.Source[SelectedSource];
source.Loaded := TRUE;
Source.TransferMode := ttmMemory;
if (resolucion<>150) and (resolucion<>200) and (resolucion<>300) then resolucion:=150;
Source.EnableSource(true, FALSE);
//despues de que el usuario pulse digitalizar, ajusto las propiedades para que no crezca el archivo resultante
msg_error_escaner(
Source.SetICapUnits(tuPixels), 'No se puede configurar el escaner (propiedad units).');
msg_error_escaner(
Source.SetIPixelType(tbdRGB), 'No se puede configurar el escaner (propiedad color).');
msg_error_escaner(
Source.SetIYResolution(resolucion), 'No se puede configurar el escaner (propiedad ppp y.');
msg_error_escaner(
Source.SetIXResolution(resolucion), 'No se puede configurar el escaner (propiedad ppp x.');
--- donde msg_error_escaner muestra una ventana con el motivo del error ---
procedure msg_error_escaner(valor:TCapabilityRet; texto:String);
var s:String;
begin
case valor of
crSuccess:exit;
crUnsupported: s:='Capability not supported by the source.';
crBadOperation: s:='Bad combination of values from the parameters.';
crDependencyError: s:='Capability depends on another capability which is not properly set.';
crLowMemory: s:='The system is short on memory.';
crInvalidState: s:='The source or the source manager are not ready to set this capability or do the requested operation.';
crInvalidContainer:s:='The container used is invalid.';
end;
showmessage(texto+#13+ s);
end;
vale, pues el error me lo da con el software de hp en cada linea de ajuste del escaner y me dice que
'The source or the source manager are not ready to set this capability or do the requested operation.'
cosa que para el asistente de windows me funcionaba bien, logrando ajustar el escaner por programacion y haciendo caso omiso a los valores del usuario.
¿Podeis ayudarme? Me esta volviendo loco.
Gracias, David.