Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   componente twain (https://www.clubdelphi.com/foros/showthread.php?t=75656)

CarlosHernandez 09-09-2011 21:59:12

componente twain
 
buenas tardes foristas, estoy utilizando el componente twain en delphi 2007 y windows xp, el sistema me funcionaba de maravilla, le cambie los driver de la camara y se volvio loco, (tomo fotografias con una web cam desde el componente twain, la convierto en jpg y la guardo) pero al tomar la fotografia sale el siguiente error:

"access violation at address 01D62FB2 in module 'TwainUI.dll'. Read of address 0151F000."

anteriormente lo habia solucionado cambiando los driver de la camara de vista a xp, pero ahora eso ya no sirvio.


el codigo es el siguiente.
en el boton para llamar el software de la camara:
Código Delphi [-]
DelphiTwain1.LibraryLoaded := TRUE;

  DelphiTwain1.SourceManagerLoaded := TRUE;

  if DelphiTwain1.LibraryLoaded = FALSE then Exit;

  //If there is no sources, also exit
  if DelphiTwain1.SourceCount = 0 then exit;


  //Acquire from the first source
  
  DelphiTwain1.Source[0].TransferMode := ttmMemory;

  DelphiTwain1.Source[0].Loaded := TRUE;

  DelphiTwain1.Source[0].Enabled := TRUE;

y en el evento Twain1TwainAcquire:


Código Delphi [-]
procedure TForm4.DelphiTwain1TwainAcquire(Sender: TObject;
  const Index: Integer; Image: TBitmap; var Cancel: Boolean);
begin


Image1.Picture.Assign(Image);
  //We only want the first image

  Cancel := TRUE;


mybmp:=TBitmap.Create;

with mybmp do

try

Assign(Image1.Picture);

myjpeg:=TJPEGImage.Create;

with  myjpeg do begin

Assign(mybmp);

SaveToFile('X:\Picture\prueba.jpg');

            free;

            end;

    finally

    Free;

end;

   Image1.Picture.LoadFromFile('X:\Picture\prueba.jpg');

end;

GRACIAS

newtron 10-09-2011 09:43:52

Hola.

No sé si te servirá pero yo tuve un problema similar y lo solucioné descargando y volviendo a cargar la libreria en cada captura, te pongo los dos procedimientos por si te sirven de ayuda.

Al seleccionar el dispositivo...

Código Delphi [-]
procedure TNTFormCompras.NTButton1Click(Sender: TObject);
var
  SelItem: Integer; 
begin
  try
    delphiTwain1.UnloadLibrary;
  except
  end;
  if DelphiTwain1.LoadLibrary() then
    with DelphiTwain1 do
    begin
      LoadSourceManager();
      SelItem := SelectSource();
      if SelItem = -1 then begin
        ShowMessage('No se ha seleccionado dispositivo');
        exit;
      end;
    end
  else
    ShowMessage('Twain no está instalado');
  DelphiTwain1.LibraryLoaded := TRUE;
  DelphiTwain1.SourceManagerLoaded := TRUE;
  if DelphiTwain1.LibraryLoaded = FALSE then Exit;
  if DelphiTwain1.SourceCount = 0 then exit;
  DelphiTwain1.Source[0].TransferMode := ttmMemory;
  DelphiTwain1.Source[0].Loaded := TRUE;
  DelphiTwain1.Source[0].Enabled := TRUE;
end;

En el Twain1TwainAcquire

Código Delphi [-]
procedure TNTFormCompras.DelphiTwain1TwainAcquire(Sender: TObject;
  const Index: Integer; Image: TBitmap; var Cancel: Boolean);
var
  Bmp: TBitmap;
  sAux: String;
  Jpg: TJpegImage;
begin
  inherited;
  Bmp:=TBitmap.Create;
  Bmp.Assign(Image);
  Cancel := TRUE;
  sAux:=DlgPropiedades.DirectorioImagenes + '\' + Tabla.TableName+'_'+Tabla.FieldByname('CODIGO').AsString+'.jpg';
  JPG:=TJpegImage.Create;
  JPG.Assign(BMP);
  jpg.SaveToFile(sAux);
end;

Espero que te sirva de algo.
Saludos

CarlosHernandez 12-09-2011 19:57:18

gracias newtron, probe tu codigo, y sigue igual, cuando le doy para abrir el dispositivo, me pide q seleccione el mismo, luego q abre el software de la camara me da el mismo error, por cierto la camara es una genius videocamlook.

newtron 13-09-2011 08:35:10

¿Puedes probar con otra cam?


La franja horaria es GMT +2. Ahora son las 09:38:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi