Pergunta

Estamos usando JAI ( https://jai-imageio.dev.java.net/ ) para dimensionar e recortar imagens em Java. Nós gostaríamos de criar cantos arredondados em nossas imagens. Como fazemos isso?

As imagens são JPG e PNG. Eu acho que é mais fácil fazer isso com JPGs?

A imagem é uma PlanarImage de JAI

PlanarImage src = JAI.create(...,...);

que pode ser transformado em um objeto java.awt.Graphics

Alguém já fez isso antes?

Foi útil?

Solução

PNG suporta um canal alfa transparente, mas JPG não. Assim, para JPG você teria que também escolher uma cor para pintar a parte "invisível" do retângulo para os cantos arredondados.

Há uma java.awt.geom.RoundRectangle2D classe disponíveis para fazer isso:

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    RoundRectangle2D rr = new RoundRectangle2D.Float(50, 50, 200, 100, 10, 10);
    g2d.draw(rr);
}

O Float () método da classe RoundRectangle2D leva seis argumentos:

  • Os dois primeiros representam a localização do canto superior esquerdo.
  • Argumentos 3 e 4 representam a largura e a altura do rectângulo arredondado.
  • Os dois últimos argumentos representam a largura ea altura do arco desenhado no cantos.

Então, desenhe um retângulo arredondado que só irá conter a imagem que deseja ter cantos arredondados e então superposição ou use uma máscara para obter o efeito desejado.

Outras dicas

O que o impede de desenho quaisquer cantos que você gosta no objeto Graphics obtido a partir da imagem? Eu não sou realmente certo o que seus "cantos arredondados" são suposto a aparência, mas você pode realizar todas as operações de pintura razoáveis ??no objeto Graphics.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top