Erro com rotação de imagem

6 respostas
java
M

Boa noite,

Estou tentando criar um método para girar a foto ao clicar no botão, porém ele me gera um desses 2 erros…
Alguém já teve os mesmos problemas?

Exception in thread AWT-EventQueue-0 java.lang.IllegalArgumentException: input == null!

at javax.imageio.ImageIO.read(ImageIO.java:1348)

Exception in thread AWT-EventQueue-0 java.lang.IllegalArgumentException: input == null!

at javax.imageio.ImageIO.read(ImageIO.java:1388)

6 Respostas

M

Posta o código que fica mais fácil de resolver

input == null! tem um ponto de excçamação no final, era pra ele estar ali?
Você quer comparar se é diferente de null? Se sim, faça assim: input != null

S

Você está passando null para o ImageIO.read

F

Você possivelmente tá passando o input como “null!”, sendo que sua intenção deve ser passar como “null”. Se não for isso, posta o código pra gente te ajudar.

S

Galera, a exclamação no final é da mensagem não foi incluída pelo @Matheus_Muta

Essa exclamação faz parte da mensagem de exceção. O ponto de exclamação é utilizado após as interjeições, frases exclamativas e imperativas. Pode exprimir surpresa, espanto, susto, indignação, piedade, ordem, súplica, dentre outras sensações.

Se não acreditam, vejam o fonte do método ImageIO.read:

public static BufferedImage read(InputStream input) throws IOException {
    if (input == null) {
        throw new IllegalArgumentException("input == null!");
    }

    ImageInputStream stream = createImageInputStream(input);
    if (stream == null) {
        throw new IIOException("Can't create an ImageInputStream!");
    }
    BufferedImage bi = read(stream);
    if (bi == null) {
        stream.close();
    }
    return bi;
}

Ou seja, nosso colega está passando um parâmetro null para o método ImageIO.read.

F

Ué, é mesmo oxe. Acho que só não esperavamos o uso literal dele, huauhhau.

M

segue o código que estou usando para rotacionar a imagem

metodo para virar a foto:
    public static BufferedImage rotateImage(BufferedImage rotateImage) {
    		int ang = 90;
    		BufferedImage original = rotateImage;
    		BufferedImage dest = new BufferedImage(original.getHeight(), original.getWidth(), original.getType());
    		Graphics2D surface = dest.createGraphics();
    		AffineTransform rotation = new AffineTransform();
    		rotation.setToTranslation((dest.getWidth() - original.getWidth()) / 2.0, (dest.getHeight() - original.getHeight()) / 2.0);
    		rotation.rotate(Math.toRadians(ang), original.getWidth()/2.0, original.getHeight()/2.0);
    		surface.transform(rotation);
    		surface.drawImage(original, 0, 0, null);
    		surface.dispose();
    		return dest;
    	}

aqui eu tento executar a ação

try {
            String caminho = txtEnderecoFoto.getText();
            if(caminho == null){
                JOptionPane.showMessageDialog(null, "Erro com a foto");
            } else{
            BufferedImage img = ImageIO.read(getClass().getResourceAsStream(caminho));
            ImageIcon imagem = new ImageIcon(rotateImage3(img));
            lblFoto.setIcon(imagem);
            }
        } catch (IOException ex) {
            Logger.getLogger(telaCadastroAcervo.class.getName()).log(Level.SEVERE, null, ex);
        }
Criado 27 de agosto de 2018
Ultima resposta 5 de set. de 2018
Respostas 6
Participantes 4