在某些设备上,拍摄的图像会自动旋转

时间:2019-07-12 11:12:59

标签: android android-camera android-camera2 android-camerax

因此,我注意到在某些设备上,我捕获的图像(位图)怪异地旋转了-通常旋转到90度。我确实创建了一个可以正确旋转它的函数,但是现在的问题是,有时图像完全可以被捕获(捕获)。有什么方法可以确定捕获的图像是否旋转(方向)?

我发现了这样的代码片段:

  try {
     ExifInterface exif = new ExifInterface(filename); 
     int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 
                      ExifInterface.ORIENTATION_NORMAL);
     int rotate = 0;
     switch(orientation) {
        case  ExifInterface.ORIENTATION_ROTATE_270:
             rotate-=90;break;
        case  ExifInterface.ORIENTATION_ROTATE_180:
             rotate-=90;break;
        case  ExifInterface.ORIENTATION_ROTATE_90:
             rotate-=90;break;
        }
      ...    
    }

但是ExifInterface exif = new ExifInterface(filename);期望创建一个文件或文件uri。这是否意味着我必须先将位图更改为文件,然后再使用此方法,还是有其他方法可以解决此问题?

P.S。我正在使用Android's Camera X

3 个答案:

答案 0 :(得分:0)

建议使用AndroidX ExifInterface库。如果捕获的图像是Jpeg,则可以通过使用InputStream包装缓冲区来使用ExifInterface(InputStream)

答案 1 :(得分:0)

不同设备上的传感器方向不同。 CameraX会尊重这一点,并在回调中返回带有旋转值的图像,该图像可用于将其垂直旋转。 https://developer.android.com/reference/androidx/camera/core/ImageCapture.OnImageCapturedListener.html#onCaptureSuccess(androidx.camera.core.ImageProxy,%20int)

答案 2 :(得分:0)

您可以尝试

var y = document.querySelector("#about input").value