PDA

Ver la Versión Completa : Delphi 2010: Problema con los colores al escanear con Delphi TWAIN


davidrgh
23-08-2012, 14:00:55
Hola a todos

Estoy usando el Delphi Twain tanto para Delphi 2005 (el original) como para Delphi 2010 (una versión modificada que encontré en otro post de este foro).

El programa que estoy tratando de crear es uno muy simple, de muestra: un botón para escanear y que muestre una previsualización de la imagen y otro para guardarla en un archivo.

El código en ambas versiones de Delphi es el siguiente:

CÓDIGO DEL BOTÓN DE ESCANEAR

procedure TForm1.BitBtn1Click(Sender: TObject);
var
SourceIndex: Integer;
Source: TTwainSource;

begin
DelphiTwain1.LibraryLoaded := TRUE;
DelphiTwain1.SourceManagerLoaded := TRUE;
SourceIndex := DelphiTwain1.SelectSource();
if (SourceIndex <> -1) then
begin
Source := DelphiTwain1.Source[SourceIndex];
Source.Loaded := TRUE;
Source.ShowUI:= false;
Source.Enabled := TRUE;
Source.SetIBitDepth(24);
end;
end;


CÓDIGO DE RECEPCIÓN DE LA IMAGEN (EVENTO)
procedure TForm1.DelphiTwain1TwainAcquire(Sender: TObject; const Index: Integer;
Image: TBitmap; var Cancel: Boolean);
begin
Image1.Picture.Assign(Image);
Cancel:= true;
Image1.Visible:= true;
end;


Bien, en Delphi 2005 lo hace de maravilla (pierde un poco de resolución, pero el escáner es un tanto antiguo).
El caso es que en 2010, el escaneo lo hace bien (la previsualización que sale en el diálogo del propio escáner es correcta (este diálogo no se le mostrará al usuario, sino que escaneará directamente)), pero cuando devuelve el control a Delphi y le pasa el TBitmap, los colores se cambian. Si la imagen original tenía tonos rojos y anaranjados, me sale un "verde radiación nuclear de los Simpson" muy feo.

He estado haciendo pruebas y he leído por ahí que el Delphi 2010 no representa los colores en el mismo orden que el 2005. En efecto, he probado a usar una función que encontré por ahí para intercambiar el RGB por GBR (usando el cuentagotas del photoshop y comparando ambas imágenes era el cambio que más parecía acercarse)... y sí que lo cambia aproximándose al original, pero aún así sigue siendo una chapuza (mete morados en los bordes, cambia el tono de los colores (un rojo granate pasa a ser morado)...).

No sé si me he explicado bien. A ver si alguien que tenga experiencia en esto puede aconsejarme.

Gracias

Pd: Se me olvidaba. Las pruebas las he hecho sobre un Windows XP virtualizado sobre Windows 7 (ya que el escáner no funciona en versiones posteriores al XP).