Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Seg Mai 27, 2013 11:27 pm Assunto: Como utilizar essa procedure?? |
|
|
Olá amigo, uso o componente TCamera para capturar a imagem da webcam e para enviar para o cliente remoto e estou salvando a imagem no hd a cada 255 milissegundos, mas está deixando a aplicação muito lenta, o Tcamera tem uma procedure que aparentemente pita a imagem sem salvar no hd, mas não seu usa-lá. a sintaxe é o seguinte:
Código: |
procedure paintto(DC : HDC, X : integer, Y integer);
procedure paintto(Canvas : TCanvas, X : integer, Y integer);
|
Tentei usar assim para pintar a imagem em um TImage mas não funcionou:
Código: |
camera.PaintTo(Image1.Picture.Bitmap.Canvas, image1.Width, image1.Height);
|
Qual seria a maneira correta de usar essas procedures??
procedure paintto(DC : HDC, X : integer, Y integer);
procedure paintto(Canvas : TCanvas, X : integer, Y integer); |
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Ter Mai 28, 2013 12:48 am Assunto: Re: Como utilizar essa procedure?? |
|
|
SrJeff escreveu: | Qual seria a maneira correta de usar essas procedures??
procedure paintto(DC : HDC, X : integer, Y integer);
procedure paintto(Canvas : TCanvas, X : integer, Y integer); |
Na realidade as duas maneiras são corretas. A diferença é que a primeira pinta diretamente no Device Context, e a segunda necessita de um Canvas.
Já que não conseguiu com a segunda, tente assim:
Código: | var
DC: HDC;
begin
DC := GetDC(Image1.Picture.Bitmap.Canvas.Handle);
camera.PaintTo(DC, image1.Width, image1.Height);
end; |
|
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Ter Mai 28, 2013 2:07 am Assunto: Re: Como utilizar essa procedure?? |
|
|
Obrigado por responder...
Mas não funcionou, ficou da mesma maneira que antes a imagem fica sem nada. |
|
Voltar ao Topo |
|
 |
adami Profissional


Registrado: Sexta-Feira, 12 de Novembro de 2010 Mensagens: 501
|
Enviada: Ter Mai 28, 2013 7:56 am Assunto: |
|
|
qual ha necessidade de salvar a cada 255 milissegundos no hd a imagem ?
por acaso vc n esta tentando ver o preview da imagem ? |
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Ter Mai 28, 2013 11:34 am Assunto: |
|
|
É que na verdade eu tenho que enviar a imagem via sockets, e não consigo pegar diretamente do componente, então eu salvo e carrego em e converto para jpeg para depois enviar, e fica muito lento.
Essas procedures imagino eu que seja para pintar a imagem em um componente, mas se alguém souber alguma outra maneira de pegar a imagem do componente já ajuda. |
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Ter Mai 28, 2013 12:17 pm Assunto: |
|
|
Tente pintar em um TBitmap.
Acho que talvez seja um problema no TImage por ser um TGraphicControl. |
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Ter Mai 28, 2013 1:47 pm Assunto: |
|
|
GustavoToyota escreveu: | Tente pintar em um TBitmap.
Acho que talvez seja um problema no TImage por ser um TGraphicControl. |
Tentei assim, mas tbm não funcionou, vcs recomendam algum componente??
Código: |
var bitmap : TBitmap;
DC: HDC;
begin
bitmap := TBitmap.Create;
DC := GetDC(bitmap.Canvas.Handle);
Camera1.PaintTo(dc, image1.Width, image1.Height);
|
|
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Ter Mai 28, 2013 6:46 pm Assunto: |
|
|
Você deve primeiro redimensionar o tamanho do TBitmap. Esse pode ser também o motivo de não ter funcionado no TImage, pois acredito que o Canvas do TImage não se auto-redimensiona. Tente assim:
Código: | var
Bitmap: TBitmap;
DC: HDC;
begin
Bitmap := TBitmap.Create;
Bitmap.SetSize(800, 600);
DC := GetDC(Bitmap.Canvas.Handle);
Camera1.PaintTo(DC, Bitmap.Width, Bitmap.Height);
Form1.Canvas.Draw(Bitmap, 0, 0);
Bitmap.Free;
end; |
|
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Ter Mai 28, 2013 8:03 pm Assunto: |
|
|
Também não funcionou, mas pelo menos a imagem apareceu branca dessa vez.
Da maneira que vc falou não deu mas tentei assim:
Código: |
var
Bitmap: TBitmap;
DC: HDC;
begin
Bitmap := TBitmap.Create;
Bitmap.Height := 300;
Bitmap.Width := 500;
//Bitmap.SetSize(800, 600);
DC := GetDC(Bitmap.Canvas.Handle);
Camera1.PaintTo(dc, Bitmap.Width, Bitmap.Height);
Form1.Canvas.Draw(0,0,Bitmap);
Bitmap.SaveToFile('C:\bmp.bmp');
Bitmap.Free;
|
|
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Qua Mai 29, 2013 1:57 pm Assunto: |
|
|
UP
Editado pela última vez por SrJeff em Qua Mai 29, 2013 1:59 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Qua Mai 29, 2013 1:58 pm Assunto: |
|
|
 |
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Qua Mai 29, 2013 2:06 pm Assunto: |
|
|
SrJeff escreveu: | Também não funcionou, mas pelo menos a imagem apareceu branca dessa vez.
Da maneira que vc falou não deu mas tentei assim:
Código: |
var
Bitmap: TBitmap;
DC: HDC;
begin
Bitmap := TBitmap.Create;
Bitmap.Height := 300;
Bitmap.Width := 500;
//Bitmap.SetSize(800, 600);
DC := GetDC(Bitmap.Canvas.Handle);
Camera1.PaintTo(dc, Bitmap.Width, Bitmap.Height);
Form1.Canvas.Draw(0,0,Bitmap);
Bitmap.SaveToFile('C:\bmp.bmp');
Bitmap.Free;
|
|
Aiaiai...
Uma coisa óbvia que deixei passar... Tente assim:
Código: |
var
Bitmap: TBitmap;
DC: HDC;
begin
Bitmap := TBitmap.Create;
Bitmap.SetSize(500, 300);
Camera1.PaintTo(Bitmap.Canvas, 0, 0);
Form1.Canvas.Draw(0, 0, Bitmap);
Bitmap.SaveToFile('C:\bmp.bmp');
Bitmap.Free;
|
|
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
|
Voltar ao Topo |
|
 |
SrJeff Aprendiz

Registrado: Sexta-Feira, 8 de Janeiro de 2010 Mensagens: 289
|
Enviada: Qui Mai 30, 2013 6:00 pm Assunto: |
|
|
UP |
|
Voltar ao Topo |
|
 |
|