Android 将相机图片尺寸与手机屏幕尺寸相匹配

发布于 2024-11-25 07:37:20 字数 1431 浏览 6 评论 0原文

我有一个应用程序可以拍摄照片并将 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

I've an app that takes a camera shot and saves the jpeg on the sdcard. When i load the jpeg it is much larger than the screen. how can i display the picture to the same size as the screen as it looked in the camera preview? i've written code to get the hardware's screensize in pixels and i've logged out the camera's available picture sizes eg

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);
        }

    }

output:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦过后 2024-12-02 07:37:20

已解决:

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();
      }

    }

solved:

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();
      }

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文