Pergunta

Em primeiro lugar, talvez “paisagem” não seja a melhor palavra para descrever, mas não consigo pensar em outra no momento.

Estou usando o código a seguir para mostrar uma imagem em um ImageView, mas minha imagem que foi tirada com o dispositivo em "retrato" (cabeça erguida) está aparecendo de lado.

Meu código:

mImageView  = (ImageView) findViewById(R.id.iv_photo);

Uri u = Uri.parse("content://media/external/images/media/7");
mImageView.setImageURI(u);

XML:

<ImageView
    android:id="@+id/iv_photo"
    android:layout_width="wrap_content"          
    android:layout_height="wrap_content"/>

E sim, "content://media/external/images/media/7" é um caminho válido.

Alguma ideia?

Foi útil?

Solução

Basta verificar as dimensões da imagem, se ela for mais alta do que larga, você pode girá-la:
http://android-er.blogspot.com/2010/07/rotate-bitmap-image-using-matrix.html

Os bits relevantes são:

  bitmap = BitmapFactory.decodeFile(imageInSD);
  bmpWidth = bitmap.getWidth();
  bmpHeight = bitmap.getHeight();

  Matrix matrix = new Matrix();
  matrix.postScale(curScale, curScale);
  matrix.postRotate(curRotate);

  Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, bmpHeight, matrix, true);
  myImageView.setImageBitmap(resizedBitmap);

Outras dicas

android:id="@+id/iv_photo"

android:layout_width="320dip"   

android:layout_height="wrap_content"/>

Use isso, pode funcionar

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