Alguém sabe como arredondar uma imagem em java?
Estou fazendo um sistema de cadastro, e quando o usuário inserir a foto dele eu quero que automaticamente ela seja arredondada. Alguém sabe como fazer isso?
Alguém sabe como arredondar uma imagem em java?
Estou fazendo um sistema de cadastro, e quando o usuário inserir a foto dele eu quero que automaticamente ela seja arredondada. Alguém sabe como fazer isso?
Ve se esse link te ajuda, não testei…
Rouded Corner é para fazer os cantos arredondados.
Mas para fazer uma imagem redonda é só usar uma área elíptica para o clipping da imagem.
O método abaixo dá conta do recado:
public static BufferedImage arredondar(BufferedImage imagemRetangular) {
int largura = imagemRetangular.getWidth();
int altura = imagemRetangular.getHeight();
int raio = largura / (double) altura > 0 ? altura : largura;
BufferedImage imagemRedonda = new BufferedImage(largura, altura, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = imagemRedonda.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setClip(new Area(new Ellipse2D.Double(0, 0, raio, raio)));
graphics.drawImage(imagemRetangular, 0, 0, null);
graphics.dispose();
return imagemRedonda;
}
Exemplo de uso:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
public class ExemploImagemRedonda {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
ExemploImagemRedonda programa = new ExemploImagemRedonda();
programa.executar();
} catch (Throwable t) {
t.printStackTrace();
}
}
public static BufferedImage arredondar(BufferedImage imagemRetangular) {
int largura = imagemRetangular.getWidth();
int altura = imagemRetangular.getHeight();
int raio = largura / (double) altura > 0 ? altura : largura;
BufferedImage imagemRedonda = new BufferedImage(largura, altura, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = imagemRedonda.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setClip(new Area(new Ellipse2D.Double(0, 0, raio, raio)));
graphics.drawImage(imagemRetangular, 0, 0, null);
graphics.dispose();
return imagemRedonda;
}
public void executar() throws IOException {
InputStream arquivo = getClass().getResourceAsStream("/imagem.jpg");
BufferedImage imagemRetangular = ImageIO.read(arquivo);
BufferedImage imagemRedonda = arredondar(imagemRetangular);
apresentarImagem(imagemRedonda);
}
private void apresentarImagem(BufferedImage imagem) {
JFrame janela = new JFrame("Exemplo Imagem Redonda");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setSize(800, 600);
Container container = janela.getContentPane();
ImageIcon icone = new ImageIcon(imagem);
JLabel labelImagem = new JLabel(icone, SwingConstants.CENTER);
container.add(labelImagem, BorderLayout.CENTER);
janela.setVisible(true);
}
}