Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Imagem rotacionada indevidamente e perda da foto após rotacionar fisicamente o celular

Estou rodando a aplicação no meu celular Sony Z3 e está normal.

Contudo, após tirar a foto, a foto aparece rotacionada para a esquerda 90 º na ImageView.

Além desse problema, após tirar a foto e exibir na ImageView, quando eu mudo o celular de portrait para landscape (fisicamente), a foto desaparece sozinha da ImageView sem fazer nada. Isso é normal? É necessário fazer algum tipo de tratamento?

Obrigado!

1 resposta
solução!

Oi Ayrton tudo bom?

Esse problema da foto rotacionada é bem comum.

Você pode usar a classe ExifInterface para descobrir a orientação e fazer a rotação na mão. Algo como:

ExifInterface exif = new ExifInterface(caminhoFoto);
String orientacao = exif.getAttribute(ExifInterface.TAG_ORIENTATION);

Fazer um switch case para saber quantos graus precisa rotacionar:

switch (codigoOrientacao) {
    case ExifInterface.ORIENTATION_NORMAL:
        // rotacionar 0 graus
    case ExifInterface.ORIENTATION_ROTATE_90:
        // rotacionar 90 graus
    // mesma coisa para 180 e 270
}

E criar um novo bitmap na rotação que você precisa:

Matrix matrix = new Matrix();
matrix.postRotate(angulo);

Bitmap.createBitmap(bitmap, 0, 0,  bitmap.getWidth(), bitmap.getHeight(), matrix, true);

A questão da foto sumir é porque toda vez que você muda a orientação, o layout da Activity é recriado, então você teria que chamar este código acima no onCreate da Activity.

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software