Android сопоставляет размер изображения камеры с размером экрана телефона - PullRequest
0 голосов
/ 19 июля 2011

У меня есть приложение, которое делает снимок с камеры и сохраняет JPEG на SD-карте.Когда я загружаю JPEG, он намного больше, чем экран.Как я могу отобразить изображение того же размера, что и экран, как это выглядело в предварительном просмотре камеры?Я написал код, чтобы получить размеры экрана аппаратного обеспечения в пикселях, и вывел из системы доступные размеры изображения камеры, например

public void surfaceCreated(SurfaceHolder holder) {
        Log.e(TAG, "surfaceCreated");
        mCamera = Camera.open();
        Parameters params = mCamera.getParameters();
        List sizes = params.getSupportedPictureSizes();


       int w = getResources().getDisplayMetrics().widthPixels;
        int h = getResources().getDisplayMetrics().heightPixels;
        Log.e(TAG, "*********** hardware screen height size = "+ h);
        Log.e(TAG, "*********** hardware screen width size = "+ w);

        for(int i = 0; i<sizes.size();i++){
            int height;
            int width;
            Camera.Size cs = (Size) sizes.get(i);
            height = cs.height;
            width = cs.width;
            Log.e(TAG, "*********** camera picsize = "+ height +" X " +width);
        }

    }

вывод:

07-18 20:59:37.567: ERROR/CameraTest(4394): *********** hardware screen height size = 480
07-18 20:59:37.567: ERROR/CameraTest(4394): *********** hardware screen width size = 320
07-18 20:59:37.572: ERROR/CameraTest(4394): *********** camera picsize = 1536 X 2048
07-18 20:59:37.572: ERROR/CameraTest(4394): *********** camera picsize = 1200 X 1600
07-18 20:59:37.577: ERROR/CameraTest(4394): *********** camera picsize = 768 X 1024

1 Ответ

0 голосов
/ 19 июля 2011

решено:

public void surfaceCreated(SurfaceHolder holder) {
        Log.e(TAG, "surfaceCreated");
        mCamera = Camera.open();

        Parameters params = mCamera.getParameters();


        int w = getResources().getDisplayMetrics().widthPixels;
        int h = getResources().getDisplayMetrics().heightPixels;


        try{
        params.setPictureSize(h, w);
        mCamera.setParameters(params);
    } catch (Exception e) {
        e.printStackTrace();
      }

    }
...