【问题标题】:Why native camera rotating after saving captured image为什么保存捕获的图像后本机相机会旋转
【发布时间】:2023-03-26 13:03:01
【问题描述】:

我想启动原生 Android 相机并将图像保存在指定位置。问题是在我单击捕获照片后,预览会出现保存/丢弃的选项。单击保存后,本机相机横向旋转,并且不显示我捕获的图像。

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.setPackage(defaultCamera);
            File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
            startActivityForResult(intent, 1); 

【问题讨论】:

    标签: android


    【解决方案1】:

    这是因为重新创建了活动,因此数据不再存在。你无法控制这是否会发生。你在ActivityResult上捕获图片吗?如果是这样,您可以尝试将路径保存在保留的片段中。

    【讨论】:

      【解决方案2】:

      某些设备会在保存之前旋转图像。

      检查照片的 exif 数据并特别寻找

      ExifInterface exifInterf = new ExifInterface(SourceFileName);
      int exifOrientation = exifInterf.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
      
      switch (exifOrientation ) {
        case ExifInterface.ORIENTATION_ROTATE_270:
          rotate = 270;
          break;
        case ExifInterface.ORIENTATION_ROTATE_180:
          rotate = 180;
          break;
        case ExifInterface.ORIENTATION_ROTATE_90:
          rotate = 90;
          break;
      }
      
      Matrix matrix = new Matrix();
      matrix.postRotate(rotate);
      bitmap = Bitmap.createBitmap(bitmap , 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-20
        • 2020-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多