Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Without any code is hard to tell what's going on.</p> <p>The most simple way i've found is to read the EXIF information and check if the image needs rotation. To read more on ExifInterface class on Android: <a href="http://developer.android.com/intl/es/reference/android/media/ExifInterface.html" rel="nofollow">http://developer.android.com/intl/es/reference/android/media/ExifInterface.html</a></p> <p>That said, here is some example code:</p> <pre><code>/** An URI and a imageView */ public void setBitmap(ImageView mImageView, String imageURI){ // Get the original bitmap dimensions BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bitmap = BitmapFactory.decodeFile(imageURI, options); float rotation = rotationForImage(getActivity(), Uri.fromFile(new File(imageURI))); if(rotation!=0){ //New rotation matrix Matrix matrix = new Matrix(); matrix.preRotate(rotation); mImageView.setImageBitmap(Bitmap.createBitmap(bitmap, 0, 0, reqHeight, reqWidth, matrix, true)); } else { //No need to rotate mImageView.setImageBitmap(BitmapFactory.decodeFile(imageURI, options)); } } /** Returns how much we have to rotate */ public static float rotationForImage(Context context, Uri uri) { try{ if (uri.getScheme().equals("content")) { //From the media gallery String[] projection = { Images.ImageColumns.ORIENTATION }; Cursor c = context.getContentResolver().query(uri, projection, null, null, null); if (c.moveToFirst()) { return c.getInt(0); } } else if (uri.getScheme().equals("file")) { //From a file saved by the camera ExifInterface exif = new ExifInterface(uri.getPath()); int rotation = (int) exifOrientationToDegrees(exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL)); return rotation; } return 0; } catch (IOException e) { Log.e(TAG, "Error checking exif", e); return 0; } } /** Get rotation in degrees */ private static float exifOrientationToDegrees(int exifOrientation) { if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) { return 90; } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) { return 180; } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) { return 270; } return 0; } </code></pre> <p>If there is an error you will see the log "Error checking EXIF" on rotationForImage function.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload