[RESOLVIDO] Imagem em um JLabel ficando totalmente na cor preta

3 respostas
R

Bom dia pessoal,

Estou com um problema ao setar imagens em jLabels, as imagens estão ficando totalmente pretas conforme anexo.

Segue trecho de código utilizado:

private void exibeFoto(String endImagem) {
            ImageIcon imagem = new ImageIcon(UtilsImage.redimensionar(ImageIcon(endImagem).getImage(), 780 , 360, false));                        
            jLFoto.setIcon(imagem);
        
    }   

    public static Image redimensionar(Image imagem, int width, int height, boolean proporcional) {
        //Se a imagem já tem as dimensões passadas retorna a imagem sem alteração
        if ((imagem.getWidth(null) == width && imagem.getHeight(null) == height) || 
                (width == 0 && height == 0)) {
            return imagem;
        }

        if (proporcional) {
            // Calculos necessários para manter as propoçoes da imagem, conhecido como "aspect ratio"
            double thumbRatio = (double) width / (double) height;
            int imageWidth = imagem.getWidth(null);
            int imageHeight = imagem.getHeight(null);
            double imageRatio = (double) imageWidth / (double) imageHeight;
            if (thumbRatio < imageRatio) {
                height = (int) (width / imageRatio);
            } else {
                width = (int) (height * imageRatio);
            }
            // Fim do cálculo
        }

        BufferedImage thumbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics2D = thumbImage.createGraphics();
        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        graphics2D.drawImage(imagem, 0, 0, width, height, null);
                
        return thumbImage;
    }

Se alguém puder ajudar agradeço desde já.

3 Respostas

E

Você está usando o Eclipse? É que esta linha está com erro de sintaxe, o Eclipse está executando o seu programa mas gera uma exceção do tipo “código não foi compilado corretamente”.

ImageIcon imagem = new ImageIcon(UtilsImage.redimensionar(ImageIcon(endImagem).getImage(), 780 , 360, false));

Diferentemente do C++, você não pode converter (cast) uma String em um ImageIcon com essa sintaxe. Você tem de criar um objeto mesmo, chamando seu construtor. Provavelmente seria algo como:

ImageIcon imagem = new ImageIcon(UtilsImage.redimensionar((new ImageIcon(endImagem)).getImage(), 780 , 360, false));

Dica: não é porque seu programa tem menos linhas que vai executar mais rápido. Eu aconselharia quebrar isso em duas linhas, até para ficar mais fácil de debugar isso:

ImageIcon imagemOriginal = new ImageIcon (endImagem);
ImageIcon imagem = new ImageIcon(UtilsImage.redimensionar(imagemOriginal.getImage(), 780 , 360, false));

(Estou supondo que UtilsImage.redimensionar receba um objeto do tipo Image).

R

Brother,

Realizei a alteração conforme sua orientação e ainda sim continuo exibindo a imagem toda preta, o estranho é que quando eu seleciono uma imagem do tipo .png exibe a imagem mas com o fundo preto, as demais extensões ficam a imagem toda preta.

estou usando o netbeans, teria alguma outra dica???

Obrigado.

R

Consegui resolver aqui pessoal,

O erro estava no momento da seleção da imagem, estava fazendo um .getName() onde deveria fazer um .getPath();

Obrigado pela atenção.

Criado 20 de agosto de 2012
Ultima resposta 20 de ago. de 2012
Respostas 3
Participantes 2