0

我有一个应用程序可以从相机或图库中拍照并在图像视图中显示结果。

我只使用内容提供者获取图像并使用此缩放功能

public Bitmap scaleim(Bitmap bitmap) {
       ...
        Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, resizedWidth, resizedHeight, false);
        return scaledBitmap;
    }

在我的安卓 5 设备上一切正常,现在我在我的朋友安卓 7 设备上测试了同一个应用程序,每张垂直方向的图片都会自动旋转到水平方向。这看起来真的很奇怪,我不知道是什么导致了这个问题。

4

1 回答 1

0

问题不在于缩放,而是捕获的图像根据硬件的不同工作方式。在开始缩放之前,应该根据合适的设备进行旋转。这是以下代码:

  Matrix matrix = new Matrix();
  matrix.postRotate(getImageOrientation(url));
  Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
  bitmap.getHeight(), matrix, true)

public static int getImageOrientation(String imagePath){
     int rotate = 0;
     try {

         File imageFile = new File(imagePath);
         ExifInterface exif = new ExifInterface(
                 imageFile.getAbsolutePath());
         int orientation = exif.getAttributeInt(
                 ExifInterface.TAG_ORIENTATION,
                 ExifInterface.ORIENTATION_NORMAL);

         switch (orientation) {
         case ExifInterface.ORIENTATION_ROTATE_270:
             rotate = 270;
             break;
         case ExifInterface.ORIENTATION_ROTATE_180:
             rotate = 180;
             break;
         case ExifInterface.ORIENTATION_ROTATE_90:
             rotate = 90;
             break;
         }
     } catch (IOException e) {
         e.printStackTrace();
     }
    return rotate;
 }
于 2017-10-12T14:38:21.753 回答