ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Dúvida] Como fazer um recorte de Imagem?
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Seg Abr 09, 2012 12:01 am    Assunto: [Dúvida] Como fazer um recorte de Imagem? Responder com Citação

Boa Noite Amigos e Feliz Páscoa para todos!

Bom, vamos a minha dúvida que é a seguinte:

Como posso fazer uma seleção com o mouse e depois clicar em um botão do tipo recorte e recortar a parte de fora da área selecionada?

Veja:

Primeiro eu seleciono a imagem com o mouse



http://img827.imageshack.us/img827/7909/recortev.th.jpg


Depois clico em recortar e fica a parte de dentro da área selecionada assim:




http://img836.imageshack.us/img836/7898/recorte2c.th.jpg


Alguém pode me ajudar nessa questão?

Obrigado à todos!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Abr 09, 2012 8:37 am    Assunto: Responder com Citação

vc ja tentou como?

a pesquisa aki ajudou não?

http://www.activedelphi.com.br/forum/viewtopic.php?t=55961&highlight=recortar+imagem
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joao_arthur
Profissional
Profissional


Registrado: Sexta-Feira, 10 de Novembro de 2006
Mensagens: 687
Localização: Fortaleza-CE

MensagemEnviada: Seg Abr 09, 2012 6:42 pm    Assunto: Responder com Citação

Código:
function TForm1.CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap;
var
  bmp, tbmp: TBitmap;
  drect: TRect;
begin
  bmp := TBitmap.Create;

  bmp.Height := Valores.Bottom - Valores.Top;
  bmp.Width := Valores.Right - Valores.Left;

  drect := Bounds(0, 0, bmp.Width, bmp.Height);
  //drect := Bounds(Valores.Left,Valores.Top,Valores.Right,Valores.Bottom);
  try
    tbmp := TBitmap.Create;

    tbmp.Height := Imagem.Height;
    tbmp.Width  := Imagem.Width;

    tbmp.Canvas.Draw(0,0,Imagem);

    bmp.Canvas.CopyRect(drect, tbmp.Canvas, Valores);

    Result := bmp;
  finally
    tbmp.Free;
  end;
end;

_________________
João Arthur.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Seg Abr 09, 2012 11:02 pm    Assunto: Responder com Citação

gilsonnrodrigues escreveu:
vc ja tentou como?

a pesquisa aki ajudou não?

http://www.activedelphi.com.br/forum/viewtopic.php?t=55961&highlight=recortar+imagem


Olá amigo obrigado por responder!
Bom eu já havia tentado seguir esse tutorial mais travei na seguinte parte:

Código:

for I := pInicio.X to pFim.X do
  for J := pInicio.Y to pFim.Y do
    Image2.Canvas.Pixels[I, J] := Image1.Canvas.Pixels[I, J];



Você tentou usar ele?

Bom deu uns erros aqui, ai eu acrescentei um Var ficando assim:

Código:

var
  i, j : integer;
for I := pInicio.X to pFim.X do
  for J := pInicio.Y to pFim.Y do
    Image2.Canvas.Pixels[I, J] := Image1.Canvas.Pixels[I, J];


Agora já roda mais nada acontece...gilsonnrodrigues você pode em ajudar? Obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Seg Abr 09, 2012 11:19 pm    Assunto: Responder com Citação

joao_arthur escreveu:
Código:
function TForm1.CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap;
var
  bmp, tbmp: TBitmap;
  drect: TRect;
begin
  bmp := TBitmap.Create;

  bmp.Height := Valores.Bottom - Valores.Top;
  bmp.Width := Valores.Right - Valores.Left;

  drect := Bounds(0, 0, bmp.Width, bmp.Height);
  //drect := Bounds(Valores.Left,Valores.Top,Valores.Right,Valores.Bottom);
  try
    tbmp := TBitmap.Create;

    tbmp.Height := Imagem.Height;
    tbmp.Width  := Imagem.Width;

    tbmp.Canvas.Draw(0,0,Imagem);

    bmp.Canvas.CopyRect(drect, tbmp.Canvas, Valores);

    Result := bmp;
  finally
    tbmp.Free;
  end;
end;


Olá senhor joao_arthur, obrigado por me ajudar!
Bom, tentei usar a sua função mais também não obtive êxito, veja o processo que realizei.

Coloquei a função:

function CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap;

Em private e gerou a função abaixo:

function TForm1.CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap;
Coloquei o código que você postou...mas e agora? Basta selecionar com o Mouse? se for isto não deu certo. Não sei o que fazer, você pode me mostrar onde estou errando?

Obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joao_arthur
Profissional
Profissional


Registrado: Sexta-Feira, 10 de Novembro de 2006
Mensagens: 687
Localização: Fortaleza-CE

MensagemEnviada: Ter Abr 10, 2012 9:05 am    Assunto: Responder com Citação

cara manda pra função um TGraphic e as coordenadas, voce pode utilizar um TImage ou outro componente que le permita fazer uma seleção da imagem pegando as coordenadas, aqui eu utilizo o ImageEn mas acho que da pra fazer no TImage da uma olhada nos eventos deve ter alguma coisa relacionada ao mouse.
_________________
João Arthur.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Ter Abr 10, 2012 11:03 pm    Assunto: Responder com Citação

joao_arthur escreveu:
cara manda pra função um TGraphic e as coordenadas,


Essa parte eu não entendi...Pode me ajudar a entender?

Obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joao_arthur
Profissional
Profissional


Registrado: Sexta-Feira, 10 de Novembro de 2006
Mensagens: 687
Localização: Fortaleza-CE

MensagemEnviada: Qua Abr 11, 2012 12:50 pm    Assunto: Responder com Citação

Código:
imgCrop.Picture.Bitmap := CortarImagem(imgSource.Picture.Graphic,Bounds(left,top,right,bottom));

_________________
João Arthur.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Qui Abr 12, 2012 12:00 am    Assunto: Responder com Citação

joao_arthur escreveu:
Código:
imgCrop.Picture.Bitmap := CortarImagem(imgSource.Picture.Graphic,Bounds(left,top,right,bottom));

Olá mais uma vez joao_arthur,

Na linha de comando que você postou onde devo colocar? Tente em alguns lugares mais esta dando erro no imgCrop.

Veja:

[Error] Unit1.pas(37): Undeclared identifier: 'imgCrop'

Desculpe! Parece que quero tudo mastigado mais estou tentando mesmo!! É que me falat o conhecimento.

Muito Obrigado!

OBS.: No próprio código tem uma parte desabilitada com as barras // era para por ali?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joao_arthur
Profissional
Profissional


Registrado: Sexta-Feira, 10 de Novembro de 2006
Mensagens: 687
Localização: Fortaleza-CE

MensagemEnviada: Qui Abr 12, 2012 10:53 am    Assunto: Responder com Citação

o imgCrop é um TImage ou algum componente de imagem, voce colocou no form um TImage ?
_________________
João Arthur.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Sex Abr 13, 2012 1:33 pm    Assunto: Responder com Citação

Desculpe a demora é qeu não pude usar o PC ontem...

O erro agora é este:

[Error] Unit1.pas(44): Undeclared identifier: 'imgSource'

Obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Sex Abr 13, 2012 6:51 pm    Assunto: Responder com Citação

JR10, acredito que o "imgSource" também seja um componente TImage, que no caso recebe a imagem de origem. Portanto você vai ter dois componentes TImage no formulário: um com a imagem original e outra com a imagem cortada.

Abraço!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Sex Abr 13, 2012 8:47 pm    Assunto: Responder com Citação

Batera escreveu:
JR10, acredito que o "imgSource" também seja um componente TImage, que no caso recebe a imagem de origem. Portanto você vai ter dois componentes TImage no formulário: um com a imagem original e outra com a imagem cortada.

Abraço!


Batera você estava certo!
Porém eu gostaria de mostrar no mesmo TImage e não em outro componente... Tem como?

Meu código esta assim:

Código:

var
  bmp, tbmp: TBitmap;
  drect: TRect;
begin
  bmp := TBitmap.Create;

  bmp.Height := Valores.Bottom - Valores.Top;
  bmp.Width := Valores.Right - Valores.Left;

  drect := Bounds(0, 0, bmp.Width, bmp.Height);
  image1.Picture.Bitmap := CortarImagem(image1.Picture.Graphic,Bounds(left,top,Height,bottom));
  try
    tbmp := TBitmap.Create;

    tbmp.Height := Imagem.Height;
    tbmp.Width  := Imagem.Width;

    tbmp.Canvas.Draw(0,0,Imagem);

    bmp.Canvas.CopyRect(drect, tbmp.Canvas, Valores);

    Result := bmp;
  finally
    tbmp.Free;
  end;
end;


Veja que coloquei o nome do TImage1 no lugar do imgCrop e do imgSource e agora deu erro em:

Código:

[Error] Unit1.pas(44): Undeclared identifier: 'bottom'
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
JR10
Aprendiz
Aprendiz


Registrado: Domingo, 14 de Março de 2010
Mensagens: 170

MensagemEnviada: Dom Abr 15, 2012 10:37 pm    Assunto: Responder com Citação

Alguém por favor me de uma ajujdinha nesta dúvida...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joao_arthur
Profissional
Profissional


Registrado: Sexta-Feira, 10 de Novembro de 2006
Mensagens: 687
Localização: Fortaleza-CE

MensagemEnviada: Seg Abr 16, 2012 11:30 am    Assunto: Responder com Citação

você tem que declarar essas variáveis (left,top,Height,bottom) e setar elas antes de chamar a função, essas variáveis são as coordenadas do recorte.
_________________
João Arthur.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB