Recortar Pedaço de Imagem

Oi pessoal…

seguinte… eu tenho uma imagem (java.awt.Image), e nela eu preciso de um metodo q faça seguinte:

Permita q o usuario faça uma seleção de um pedaço da imagem(igual aquela seleção do paintbrush), e me retorne esse pedaço de imagem selecionado em um objeto (pode ser BufferedImage, sei la qqer coisa)…

alguem tem ideia de como posso fazer isso??

Basicamente, é só copiar uma imagem dentro da outra.

BufferedImage clipping = new BufferedImage(width, height, originalImage.getType()); Graphics2D area = (Graphics2D) clipping.getGraphics().create(); area.drawImage(originalImage, 0, 0, clipping.getHeight(), clipping.getWidth(), x, y, x + clipping.getHeight(), y + clipping.getWidth(), null); area.dispose();

Opa…eu conheço dessa maneira:

            java.awt.Image image = ((javax.swing.ImageIcon) icon).getImage();
            java.awt.image.FilteredImageSource fis = new java.awt.image.FilteredImageSource(
                image.getSource(), new java.awt.image.CropImageFilter((int)(x), (int)(y), (int)w, (int)h)
                );
            image = null;
            image = java.awt.Toolkit.getDefaultToolkit().createImage(fis);

hmmm… vlw pacheco e godoy, show de bola…

mas e qto a SELECAO da imagem?

como faco pra deixar uma livre selecao pro usuario?
ai sim depois q ele fizer a selecao, recorto a area selecionada…

[quote=fabiocsi]hmmm… vlw pacheco e godoy, show de bola…

mas e qto a SELECAO da imagem?

como faco pra deixar uma livre selecao pro usuario?
ai sim depois q ele fizer a selecao, recorto a area selecionada…[/quote]

Dá uma olhada na interface MouseMotionListener, ela tem o método mouseDrag, a partir do acionamento desse metodo você pode criar um retangulo…eu lembro que alem disso, tive que usar um metodo para pintar apenas as bordas do retangulo (sem ser um retangulo cheio) que eu lembre era um metodo de graphics chamado setXORMode (nao sei se existe ainda)

hmmm…

cara, olhei la a Interface MouseMotionListener… mas to com dificuldade pra como desenhar esse retangulo…

vc teria algum mini-exemplo de como desenhar um retangulo em uma imagem, usando MouseListener?

nao vo precisar colorir borda nao, so vo precisar das coordenadas geradas por esse drag mesmo…

[quote=fabiocsi]hmmm…

cara, olhei la a Interface MouseMotionListener… mas to com dificuldade pra como desenhar esse retangulo…

vc teria algum mini-exemplo de como desenhar um retangulo em uma imagem, usando MouseListener?

nao vo precisar colorir borda nao, so vo precisar das coordenadas geradas por esse drag mesmo…[/quote]

Hum, interessante, vai ficar mais facil entao.

Recomendo alguns passos:

  • Implemente o metodo mouseClick da interface MouseListener e crie dentro dele um Rectangle (java.awt.Rectangle, acho)

Rectangle -> (x,y,width,height) concorda? coloque as coordenadas iniciais do cursor em (x,y);

  • Implemente o método mouseDrag e coloque as informações novas do cursor em width, height. Com isso vc já tem uma região formada por um objeto Rectangle.

  • Tem um metodo em MouseListener referente à ação quando vc solta o botao do mouse, acho que é mouseReleased. Nela você pega o ultimo estado do seu retangulo proveniente das ações acima, e aplica o filtro que você quiser.

T+

blz manow!

fico 10 o retangulo =)

Sera que consigo fazer o mesmo, mas utilizando um Retangula estatico, direto na JMF… dai a webcam fica mostrando a imagem, quando o usuario tira foto, ele ja recorta para o tamanho do retangula… sera que rola?

[quote=fabiocsi]blz manow!

fico 10 o retangulo =)[/quote]

Cara eu to usando um PANEL para fazer, sera que como voce colocou o lance do retangle? Usando o setBounds ou oque?

Sei que o post é antigo, mas alguém teria uma ideia de como marcar um retângulo em uma imagem e depois fazer o recorte conforme as coordenadas deste retângulo?