Putain ! Il est encore planté ce bordel
24/04/2014
0
vai ter um local para tirar foto pela web can
com o componente Tcamera indicado aqui no forum
blz implementei no meu programa mas
quando inicia o form da esse erro
Putain ! Il est encore planté ce bordel
agluem sabe o que é ou se já tiver o codigo pronto me ajuda
é que o fila da gaita do meu cliente pediu
ESSE É O CÓDIGO DE TIRAR FOTO
procedure TFrmCapFoto.sbClick(Sender: TObject);
var
SR: TSearchRec;
I: integer;
begin
Camera1.FichierImage := dir+'\'+nn.Text+'.bmp';
Camera1.CaptureImageDisque;
BmpToJpg(dir+'\'+nn.Text);
img.Picture.LoadFromFile(dir+'\'+nn.Text+'.jpeg');
img.Picture.SaveToFile(dir+'\'+nn.Text+'.jpeg');
cco.Text := '1';
I := FindFirst(dir+'\*.bmp', faAnyFile, SR);
while I = 0 do begin if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(dir+'\' + SR.Name) then ShowMessage('Não foi possível excluir '+dir+'\' + SR.Name);
I := FindNext(SR);
end;
end;
Jose Silva
Post mais votado
24/04/2014
http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar?attredirects=0
Cauê Nishijima
Mais Posts
28/05/2014
Erfelipe
http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample/DirectXDelphiWebcamCapture.rar?attredirects=0
Cauê,
Sua dica foi valiosa. Realmente este fonte não dá problema porque deve fazer chamadas do DirectX. O TCamera funciona bem uma vez, depois ele dá esse problema da mensagem em francês.
Agora, preciso apenas de tirar uma foto e recuperar o JPEG. Você alterou o fonte? Dei uma olhada lá e não vi "onde" pegar a imagem. Se você fez um código para capturar uma imagem, poderia disponibilizar aqui?
Obrigado.
29/05/2014
Cauê Nishijima
DevicesList := TStringList.Create; fVideoImage.GetListOfDevices(DevicesList); cbbDevices.Items := DevicesList; DevicesList.Free;
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
procedure TfrmWebCam.iniciarCaptura; var camdevice: string; begin camdevice := Trim(cbbDevices.Items.Strings[cbbDevices.ItemIndex]); fVideoBitmap := TBitmap.Create; fVideoImage := TVideoImage.Create; fVideoImage.OnNewVideoFrame := OnNewVideoCanvas; fVideoImage.VideoStart(camdevice); fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Assign(fVideoBitmap); btnCancelarCaptura.Enabled := True; end; procedure TfrmWebCam.OnNewVideoCanvas(Sender: TObject; Width, Height: Integer; DataPtr: Pointer); begin fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Canvas.Draw(0, 0, fVideoBitmap); end;
E um outro botão pra capturar a foto:
procedure TfrmWebCam.tirarFoto; var MyJPEG: TJPEGImage; begin MyJPEG := TJPEGImage.Create; try MyJPEG.CompressionQuality := 65; fVideoImage.VideoStop; fVideoBitmap.SaveToFile('X'); MyJPEG.Assign(Utils.BmpToJpeg('X')); img1.Picture.Assign(MyJPEG); finally FreeAndNil(fVideoBitmap); FreeAndNil(fVideoImage); MyJPEG.Free; DeleteFile('X'); end; end;
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
30/05/2014
Erfelipe
Fui atrás da lib e encontrei estes exemplos também: http://www.delphibasics.info/home/delphibasicsprojects/directxdelphiwebcamcaptureexample
Sua dica foi fora de série.
Obrigado.
DevicesList := TStringList.Create; fVideoImage.GetListOfDevices(DevicesList); cbbDevices.Items := DevicesList; DevicesList.Free;
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
procedure TfrmWebCam.iniciarCaptura; var camdevice: string; begin camdevice := Trim(cbbDevices.Items.Strings[cbbDevices.ItemIndex]); fVideoBitmap := TBitmap.Create; fVideoImage := TVideoImage.Create; fVideoImage.OnNewVideoFrame := OnNewVideoCanvas; fVideoImage.VideoStart(camdevice); fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Assign(fVideoBitmap); btnCancelarCaptura.Enabled := True; end; procedure TfrmWebCam.OnNewVideoCanvas(Sender: TObject; Width, Height: Integer; DataPtr: Pointer); begin fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Canvas.Draw(0, 0, fVideoBitmap); end;
E um outro botão pra capturar a foto:
procedure TfrmWebCam.tirarFoto; var MyJPEG: TJPEGImage; begin MyJPEG := TJPEGImage.Create; try MyJPEG.CompressionQuality := 65; fVideoImage.VideoStop; fVideoBitmap.SaveToFile('X'); MyJPEG.Assign(Utils.BmpToJpeg('X')); img1.Picture.Assign(MyJPEG); finally FreeAndNil(fVideoBitmap); FreeAndNil(fVideoImage); MyJPEG.Free; DeleteFile('X'); end; end;
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
09/09/2014
Adriano Wolff
Obrigado amigo, até logo.
DevicesList := TStringList.Create; fVideoImage.GetListOfDevices(DevicesList); cbbDevices.Items := DevicesList; DevicesList.Free;
onde DevicesList é uma TStringList e fVideoImage é um TVideoImage
Ai você pode colocar um TImage e um botão para iniciar a captura:
procedure TfrmWebCam.iniciarCaptura; var camdevice: string; begin camdevice := Trim(cbbDevices.Items.Strings[cbbDevices.ItemIndex]); fVideoBitmap := TBitmap.Create; fVideoImage := TVideoImage.Create; fVideoImage.OnNewVideoFrame := OnNewVideoCanvas; fVideoImage.VideoStart(camdevice); fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Assign(fVideoBitmap); btnCancelarCaptura.Enabled := True; end; procedure TfrmWebCam.OnNewVideoCanvas(Sender: TObject; Width, Height: Integer; DataPtr: Pointer); begin fVideoImage.GetBitmap(fVideoBitmap); img1.Picture.Bitmap.Canvas.Draw(0, 0, fVideoBitmap); end;
E um outro botão pra capturar a foto:
procedure TfrmWebCam.tirarFoto; var MyJPEG: TJPEGImage; begin MyJPEG := TJPEGImage.Create; try MyJPEG.CompressionQuality := 65; fVideoImage.VideoStop; fVideoBitmap.SaveToFile('X'); MyJPEG.Assign(Utils.BmpToJpeg('X')); img1.Picture.Assign(MyJPEG); finally FreeAndNil(fVideoBitmap); FreeAndNil(fVideoImage); MyJPEG.Free; DeleteFile('X'); end; end;
Acho que da pra usar Stream nesse código anterior, mas não me lembro porque enfrentei alguma dificuldade e resolvi fazer desse jeito.
Essa é a codificação básica pra se utilizar o componente, porém no meu código fiz umas "frescuras" a mais, só pra deixar mais bonito, como utilizar um único botão pra iniciar a webcam e tirar a foto, a opção de além de tirar uma foto escolher uma já existente, ter uma imagem padrão
[img]http://arquivo.devmedia.com.br/forum/imagem/276180-20140529-083507.png[/img]
Os botões azuis em cima da foto somem e aparecem de acordo com a posição do mouse e se possui ou não uma foto.
Espero que tenha ajudado um pouco, mas qualquer coisa é só perguntar
30/09/2014
Cauê Nishijima
Então pelo erro que deu parece que vc não declarou a variável fVideoImage....que é do tipo TVideoImage
Só declarar na sessão private...e depois instanciar normal no método iniciarCaptura.
Qualquer dúvida posta ai.
Clique aqui para fazer login e interagir na Comunidade :)