Problema no componente TCamera
Estou usando o componente TCamera para salvar imagens direto da webcam, mais quando utilizo o método :
cam1.CaptureImageDisque;
ele só salva o primeiro nome da imagem. Ex: se lá em FiecherImage está setado: Imagem.bmp, ele salva somente o "I".
cam1.CaptureImageDisque;
ele só salva o primeiro nome da imagem. Ex: se lá em FiecherImage está setado: Imagem.bmp, ele salva somente o "I".
Ronaldo Lanhellas
Curtidas 0
Respostas
Leandro Carvalho
23/06/2011
Eu faço assim:
procedure ConverteParaJpeg(ACaminhoFoto: String);
var
cjBmp: TBitmap;
cjJpg: TJpegImage;
strNomeSemExtensao: String;
AFoto: TImage;
begin
AFoto:= TImage.Create(Application);
AFoto.Parent := FormTiraFoto;
AFoto.Visible := False;
AFoto.Picture.Bitmap.LoadFromFile(ACaminhoFoto + '.bmp');
cjJpg := TJPegImage.Create;
cjBmp := TBitmap.Create;
cjBmp.Assign(AFoto.Picture.Bitmap);
cjJpg.Assign(cjBMP);
cjJpg.SaveToFile(ACaminhoFoto + '.jpg');
DeleteFile(ACaminhoFoto + '.bmp');
cjJpg.Free;
cjBmp.Free;
AFoto.Free;
end;
procedure TFormTiraFoto.BBCapituraImagemClick(Sender: TObject);
var
DirNomeFoto, NomeFoto: String;
begin
DirNomeFoto := DiretorioFotos + '\' + ADOQBuscaAlunoMatricula.AsString + '.bmp';
NomeFoto := ExtractFilePath(DirNomeFoto) +
Copy(ExtractFileName(DirNomeFoto),1, Length(ExtractFileName(DirNomeFoto))-4);
CCamera.FichierImage := ExtractFileName(DirNomeFoto);
CCamera.CaptureImageDisque;
ConverteParaJpeg(NomeFoto);
end;
procedure ConverteParaJpeg(ACaminhoFoto: String);
var
cjBmp: TBitmap;
cjJpg: TJpegImage;
strNomeSemExtensao: String;
AFoto: TImage;
begin
AFoto:= TImage.Create(Application);
AFoto.Parent := FormTiraFoto;
AFoto.Visible := False;
AFoto.Picture.Bitmap.LoadFromFile(ACaminhoFoto + '.bmp');
cjJpg := TJPegImage.Create;
cjBmp := TBitmap.Create;
cjBmp.Assign(AFoto.Picture.Bitmap);
cjJpg.Assign(cjBMP);
cjJpg.SaveToFile(ACaminhoFoto + '.jpg');
DeleteFile(ACaminhoFoto + '.bmp');
cjJpg.Free;
cjBmp.Free;
AFoto.Free;
end;
procedure TFormTiraFoto.BBCapituraImagemClick(Sender: TObject);
var
DirNomeFoto, NomeFoto: String;
begin
DirNomeFoto := DiretorioFotos + '\' + ADOQBuscaAlunoMatricula.AsString + '.bmp';
NomeFoto := ExtractFilePath(DirNomeFoto) +
Copy(ExtractFileName(DirNomeFoto),1, Length(ExtractFileName(DirNomeFoto))-4);
CCamera.FichierImage := ExtractFileName(DirNomeFoto);
CCamera.CaptureImageDisque;
ConverteParaJpeg(NomeFoto);
end;
GOSTEI 0
Ronaldo Lanhellas
23/06/2011
olha só , estou tentando usar agora o componente jAVICAPTURA da linha JEDI, porém ele fica uma janela preta bem minuscula e não consigo aumentar de forma alguma.
GOSTEI 0
Ronaldo Lanhellas
23/06/2011
eu fiz o seguinte no componente TCamera:
cam1.Actif := true;
cam1.FichierImage := ExtractFilePath(Application.ExeName)+'testeDeImagem.bmp';
cam1.CaptureImageDisque;
aparece apenas o seguinte arquivo : "D "
cam1.Actif := true;
cam1.FichierImage := ExtractFilePath(Application.ExeName)+'testeDeImagem.bmp';
cam1.CaptureImageDisque;
aparece apenas o seguinte arquivo : "D "
GOSTEI 0
Ronaldo Lanhellas
23/06/2011
Bom, encontrei um artigo aqui mesmo na DevMidia que dizia algo sobre o tratamento de strings do DELPHI 2010 ser diferente do DELPHI 7 , então tive que usar o seguinte codigo:
if FileExists('F.bmp') then
DeleteFile('F.bmp');
cam1.CaptureImageDisque;
RenameFile('F', 'F.bmp');
funcionou, porém se eu ativar e desativar a webcam pelo cam1.actif, da o seguinte problema, aparece uma janela pedindo para eu selecionar a webcam, e se dar ok da aquele erro acho que é em espanhol.
http://imageshack.us/photo/my-images/851/cames.png/
if FileExists('F.bmp') then
DeleteFile('F.bmp');
cam1.CaptureImageDisque;
RenameFile('F', 'F.bmp');
funcionou, porém se eu ativar e desativar a webcam pelo cam1.actif, da o seguinte problema, aparece uma janela pedindo para eu selecionar a webcam, e se dar ok da aquele erro acho que é em espanhol.
http://imageshack.us/photo/my-images/851/cames.png/
GOSTEI 0
Ronaldo Lanhellas
23/06/2011
Parece que tudo está se resolvendo, resolvi o poblema acima apenas circundando a instrução com TRY EXCEPT. ..
Porém , a imagem fica toda preta ! Ela tira a foto e salva onde eu quero normal, mais eu não consigo visualizar a webcam, pois fica tudo preto ! apenas quando tiro a foto que consigo ver a imagem.
Porém , a imagem fica toda preta ! Ela tira a foto e salva onde eu quero normal, mais eu não consigo visualizar a webcam, pois fica tudo preto ! apenas quando tiro a foto que consigo ver a imagem.
GOSTEI 0
Alan Facchini
23/06/2011
Parece que tudo está se resolvendo, resolvi o poblema acima apenas circundando a instrução com TRY EXCEPT. ..
Porém , a imagem fica toda preta ! Ela tira a foto e salva onde eu quero normal, mais eu não consigo visualizar a webcam, pois fica tudo preto ! apenas quando tiro a foto que consigo ver a imagem.
O problema de salvar com a primeira pode ser resolvido da seguinte maneira:
ache a linha "retc := capFileSetCaptureFile(FFramePreview, LongInt(@achFileName));" no método CaptureImageDisque.
Substitua por "retc := capFileSetCaptureFile(FFramePreview, LongInt(AnsiString(FFichierImage));". Agora ele salva no caminho especificado na propriedade do componente.
No windows vista com uma camera microsoft eu tenho o mesmo problema citado no post anterior. Alguém conseguiu resolver o problema.
ps: Windows 7 e XP não ocorre o problema.
GOSTEI 0
Gilson Lima.
23/06/2011
Amigos. Para resolver os problemas de Gravar em pasta específica substituam o método CaptureImageDisque por este alterado com a ajuda do post anterior:
procedure TCamera.CaptureImageDisque(Path :String);
var
achSingleFileName : array [0..255] of Char;
begin
If FFramePreview = 0 then exit;
capGrabFrameNOStop(FFramePreview);
StrPCopy(achSingleFileName, FFichierImage);
capFileSaveDIB(FFramePreview, LongInt(AnsiString(Path)));
end;
Valeu!!
anastacionaweb@gmail.com
procedure TCamera.CaptureImageDisque(Path :String);
var
achSingleFileName : array [0..255] of Char;
begin
If FFramePreview = 0 then exit;
capGrabFrameNOStop(FFramePreview);
StrPCopy(achSingleFileName, FFichierImage);
capFileSaveDIB(FFramePreview, LongInt(AnsiString(Path)));
end;
Valeu!!
anastacionaweb@gmail.com
GOSTEI 0
Vinicius Silva
23/06/2011
To com um problema no componente TCamera, que so consigo capturar bem a primeira vez, se tentar capturar novamente, ao invés de exibir a captura da webcam, fica tudo verde. Tenho que fechar a aplicacao e abir novamente. Alguem imagina o q pode ser?
GOSTEI 0
José
23/06/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0