【问题标题】:Image Preview in own camera-- Android在自己的相机中预览图像 - Android
【发布时间】:2014-02-12 10:47:34
【问题描述】:

我正在做一个应用程序,它需要设备(通常是平板电脑)处于横向,但图片必须在屏幕上以纵向显示。

到这里为止,我已经做到了。但是现在,当我拍照时,“预览”图像以横向显示,看起来很奇怪。

查看图片以了解我的意思:

您在拍照前的看法:

那是在拍照之后:

我不知道如何解决它

这就是surfaceView:

@Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

        // stop Preview Before making changes
        try {
            mCamera.stopPreview();
        } catch (Exception e) {
            // ignored: is trying to stop a non-existent preview

        }

        try {
            mCamera.setPreviewDisplay(mHolder);
            mCamera.startPreview();
        } catch (Exception e) {
            Log.d("CAMERAPREVIEW", "Error starting camera preview : " + e.getMessage());
        }

    }

并且方法被覆盖

private PictureCallback mPicture = new PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

            File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
            if (pictureFile == null) {
                Log.d(TAG, "Error creating media file, check storage permissions: ");
                return;
            }

            try {
                FileOutputStream fos = new FileOutputStream(pictureFile);
                fos.write(data);
                fos.close();

//                              Not used for the moment
//              Intent returnIntent = new Intent();
//              setResult(RESULT_CANCELED, returnIntent);
//              finish();
            } catch (FileNotFoundException e) {
                Log.d(TAG, "File not found: " + e.getMessage());
            } catch (IOException e) {
                Log.d(TAG, "Error accessing file: " + e.getMessage());
            }
        }
    };

【问题讨论】:

    标签: android layout android-camera preview


    【解决方案1】:

    您可以使用Camera.setDisplayOrientaion() 旋转SurfaceView 上的预览。但这不会影响捕获的图像。您的帖子没有透露您如何显示从文件中捕获的图像(我假设这是您在 second picture 中显示的内容)。如果您将其作为位图加载到ImageView,您可以请求位图的旋转。

    看起来您的图片尺寸与预览的纵横比不同。我建议你看看最近的讨论here

    但也许我误解了你在做什么。也许您的问题是您没有在onPicturetaken() 中重新启动预览?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2012-07-04
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      相关资源
      最近更新 更多