Advertisement
darlan16oliveira

Método redimensionar imagem

Feb 20th, 2020
621
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | None | 0 0
  1. /**
  2.      * Este método redimensiona a imagem considerando o tamanho da label. Ele
  3.      * ajusta automaticamente ao ponto menor, supondo que a imagem seja mais
  4.      * larga que a label. O método reduz a escala da imagem para se encaixar na
  5.      * largura. E se a largura for menor ele se ajusta também a altura sem
  6.      * perder a proporção.
  7.      *
  8.      * @param pImagem
  9.      * @return
  10.      */
  11.     public ImageIcon ajustarImgEmLabel(ImageIcon pImagem) {
  12.  
  13.         double larguraDaImagem = pImagem.getIconHeight();
  14.         double alturaDaImagem = pImagem.getIconWidth();
  15.  
  16.         double larguraDaLabel = jlLogo.getWidth();
  17.         double alturaDaLabel = jlLogo.getHeight();
  18.        
  19.         //Encontra a distancia de um ponto a outro da imágem cruzando pelo centro.
  20.         double distanciaCentral = Math.sqrt(larguraDaImagem + alturaDaImagem); // distanciaCentral = raiz de lado + altura
  21.         double percentReducaoPelaLargura = (larguraDaLabel * distanciaCentral) / alturaDaImagem; //regra de 3 para achar o percentual de redução x = largura da label * distanciaCentral / largura da imagem
  22.         double novaAlturaImagem = (percentReducaoPelaLargura * larguraDaImagem) / distanciaCentral; //regra de 3
  23.  
  24.         larguraDaImagem = novaAlturaImagem;
  25.         alturaDaImagem = larguraDaLabel;
  26.  
  27.         if (novaAlturaImagem > alturaDaLabel) {
  28.             distanciaCentral = Math.sqrt(larguraDaImagem + alturaDaImagem); // distanciaCentral = raiz de lado vezes altura
  29.             double hipotenusaReduzidaPelaAlturaDaLabel = (alturaDaLabel * distanciaCentral) / larguraDaImagem; //regra de 3 para achar o percentual de redução x = largura da label * distanciaCentral / largura da imagem
  30.             double novaLargura = (hipotenusaReduzidaPelaAlturaDaLabel * alturaDaImagem) / distanciaCentral; //regra de 3
  31.             larguraDaImagem = alturaDaLabel;
  32.             alturaDaImagem = novaLargura;
  33.         } else {
  34.             distanciaCentral = Math.sqrt(larguraDaImagem + alturaDaImagem); // distanciaCentral = raiz de lado vezes altura
  35.             percentReducaoPelaLargura = (larguraDaLabel * distanciaCentral) / alturaDaImagem; //regra de 3 para achar o percentual de redução x = largura da label * distanciaCentral / largura da imagem
  36.             novaAlturaImagem = (percentReducaoPelaLargura * larguraDaImagem) / distanciaCentral; //regra de 3
  37.  
  38.         }
  39.  
  40.         pImagem.setImage(pImagem.getImage().getScaledInstance((int) alturaDaImagem, (int) larguraDaImagem, 1));
  41.  
  42.         return pImagem;
  43.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement