A JPEG file can have Exif metadata which can provide the rotation/translation field information for a raw JPEG image. So, a landscape raw JPEG image could actually be a portrait because it’s EXIF orientation could be set to ORIENTATION_ROTATE_90, the best way to handle such scenarios is to either use a library like Picasso or Glide or at least learn from them. Here is a piece of code from Picasso which loads a JPEG as an in-memory bitmap and performs the right translation/rotation.
// Get the orientation ExifInterface exifInterface = new ExifInterface(imageFilePath); int exifOrientation = exifInterface.getAttributeInt(TAG_ORIENTATION, ORIENTATION_NORMAL) // Take the source of these methods from // https://github.com/square/picasso/blob/31779ac2cb971c4534cc17bd437fab1aa0083d3d/picasso/src/main/java/com/squareup/picasso3/BitmapHunter.java#L625-L659 int exifRotation = getExifRotation(exifOrientation); int exifTranslation = getExifTranslation(exifOrientation); Matrix matrix = new Matrix(); if (exifRotation != 0) { matrix.preRotate(exifRotation); } if (exifTranslation != 1) { matrix.postScale(exifTranslation, 1); } // Now use this matrix to create a new Bitmap from the existing Bitmap