如何以18.5:9或18:9的比例获得相机支持的尺寸?

时间:2018-09-12 13:28:30

标签: android camera size

我使用的是自定义相机,并使用全屏分辨率在设备的整个屏幕上显示预览。对于所有类型的设备,我们都可以使用 Camera Camera Manager 来获取图片,预览和视频的所有受支持尺寸的本地方法。检查以下我用来检索相机所有受支持尺寸的代码。

  • 使用相机

    Camera.Parameters parameters = mCameraHelper.getCamera().getParameters();
    
    // Images supported size by device
    List<Camera.Size> pictureSizes = parameters.getSupportedPictureSizes();
    
    // Camera Preview supported size by device
    List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
    
    // Video supported size by device
    List<Camera.Size> videoSizes = parameters.getSupportedVideoSizes();
    
  • 使用相机管理器

    CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
    
    try {
        for (String cameraId : manager.getCameraIdList()) {
            CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
    
    
            StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
    
            // Images supported size by device
            Size[] pictureSizes = map.getOutputSizes(ImageFormat.JPEG);
    
            // Video supported size by device
            Size[] videoSizes = map.getOutputSizes(MediaRecorder.class);
        }
    } catch (CameraAccessException e) {
        e.printStackTrace();
        Log.e(TAG, "setUpCameraOutputs: catch: " + e.getMessage());
    } catch (NullPointerException e) {
        Log.e(TAG, "setUpCameraOutputs: catch: " + e.getMessage());
    }
    

我已使用此代码并在三星A8 + 设备中进行了测试,下面是运行上述代码后在输出中得到的尺寸。

==============================================
================  Preview size    ============
Preview size : 0 : Width: 1080 , Height: 1920
Preview size : 1 : Width: 1080 , Height: 1440
Preview size : 2 : Width: 1088 , Height: 1088

==============================================
================  Picture size    ============
Picture size : 0 : Width: 3456 , Height: 4608
Picture size : 1 : Width: 2592 , Height: 4608
Picture size : 2 : Width: 3456 , Height: 3456
Picture size : 3 : Width: 2448 , Height: 3264
Picture size : 4 : Width: 1836 , Height: 3264
Picture size : 5 : Width: 2448 , Height: 2448
Picture size : 6 : Width: 1152 , Height: 2048
Picture size : 7 : Width: 1080 , Height: 1920

==============================================
================   Video size   ==============

Video size : 0 : Width: 1080 , Height: 1920
Video size : 1 : Width: 1080 , Height: 1440
Video size : 2 : Width: 1072 , Height: 1072

与上述输出尺寸相比,下面列出的是真实的本机 Samsung A8 + 设备相机尺寸。由此,我想要一个18.5:9的比例大小,这是标签,因为在下面的列表中“我需要这个尺寸”。

==============================================
================  Picture size    ============
Picture size : 0 : Width: 3456 , Height: 4608
Picture size : 1 : Width: 2592 , Height: 4608
Picture size : 2 : Width: 2240 , Height: 4608    <--- I need this size
Picture size : 3 : Width: 3456 , Height: 3456
Picture size : 4 : Width: 1836 , Height: 3264
Picture size : 5 : Width: 2448 , Height: 2448

==============================================
================   Video size   ==============

Video size : 0 : Width: 1080 , Height: 1920
Video size : 1 : Width: 1080 , Height: 2224    <--- I need this size
Video size : 2 : Width: 1072 , Height: 1072
Video size : 2 : Width: 720 , Height: 1280
Video size : 2 : Width: 480 , Height: 640

我的查询:当我使用上述代码从输出尺寸中使用更高的分辨率进行全屏预览时,相机预览会拉伸,因为它没有18.5:9的分辨率。

因此,如何获得18:9或18.5:9之类的分辨率,如今在称为全屏设备或陷波显示器的新设备中可用。我需要适用于所有设备的适当解决方案,并提供与设备本机相机中列出的尺寸相同的尺寸,以便全屏预览相机。

0 个答案:

没有答案