解决安卓手机竖向拍照后,图像横屏展示的问题。

安卓手机调用系统的相机拍照之后,本来应该是根据你手机的拍照方向,预览照片应该是根据你手持手机的方向不一样而不一样。但是现在就有一个问题,华为手机是正常的,但是像Vivo和小米手机跳用系统的相机拍照之后,显示的预览图是横屏的。 首先试着解决Activity的显示方式只能是竖屏:

android:screenOrientation="portrait"

发现加上之后华为是可以正常显示的,但是小米和vivo手机还是不行。 Android 设置禁止横屏失效解决方法 加上代码申请竖屏之后,解决了vivo手机的问题,可以正常显示。但是小米系列手机不行! 后来发现小米手机的拍照之后,图片默认是横向显示的,也就是手机其实还是正常的竖屏,但是照片被旋转了90度显示。 下面是小米的适配代码:

hideTakePhotoLayout();

BitmapFactory.Options options = new BitmapFactory.Options();

Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options);

//在这里判断显示图片的旋转角度,然后正确旋转之后显示

Matrix matrix = new Matrix();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

//compress方法是把一个位图写到一个OutputStream中,参数一是位图对象,二是格式,三是压缩的质量,四是输出流

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

//输出流转成输入流

InputStream inputimage = new ByteArrayInputStream(baos.toByteArray());

matrix.postRotate(getPhotoRotation(inputimage));

Log.e(">>>>>>>>>>>>>","getPhotoRotation(inputimage):"+getPhotoRotation(inputimage));

if ("xiaomi".equalsIgnoreCase(Build.MANUFACTURER)) {

matrix.postRotate(90); //小米手机需要旋转90度正常显示

}

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

vShowPhoto.setImageBitmap(bitmap);

bases64 = EncryptHelper.getBase64(bytes);

if (vloadingLay != null)

vloadingLay.setVisibility(View.VISIBLE);

if(vloading != null)

vloading.setText("翻译中...");

startTranslate(bases64);

需要获取图片旋转的角度的方法:

private int getPhotoRotation(InputStream inputStream){

try{

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

ExifInterface exifInterface = new ExifInterface(inputStream);

int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

switch (orientation){

case ExifInterface.ORIENTATION_ROTATE_90:

return 90;

case ExifInterface.ORIENTATION_ROTATE_180:

return 180;

case ExifInterface.ORIENTATION_ROTATE_270:

return 270;

default:

return 0;

}

}

}catch (Exception e){

Log.e(">>>>>>>>>>>>","获取图片旋转的角度报错:"+e.getMessage());

}

return 0;

}

但是这个代码还是根据了手机的不同型号进行了适配。 解决方案二:

把手机的拍照的方向全部设置成横屏,那么拍的照片也就是横屏的照片。

2025-06-08 08:53:17
ps中怎么做路径文字效果
聂远黄奕:从恋人到挚友的20年情深,比肩偶像剧的现实传奇