Vista de la superficie de la cámara

En el modo vertical, las imágenes parecen estiradas verticalmente y en el modo horizontal parecen estiradas horizontalmente.

Aunque después de capturar la imagen aparece en tamaño adecuado .

Cómo resolver este problema?

5 Solutions collect form web for “Vista de la superficie de la cámara”

Debe elegir un tamaño de vista previa que coincida con el tamaño de su pantalla. Yo sugeriría cambiar la configuración de tamaño de vista previa para que coincida con su SurfaceView lugar de al revés. Mientras que los datos de vista previa están bien, no está distorsionado, se verá distorsionado cuando se lanza sobre una superficie con diferentes proporciones.

Si usted tiene una vista de pantalla completa, entonces usted debe encontrar la cámara tiene un tamaño de vista previa que coincida con ese tamaño – por lo menos habrá uno con la misma relación de aspecto. Por ejemplo, si su pantalla es de 640×480, entonces un tamaño de vista previa 320×240 no aparecerá estirado en una pantalla completa SurfaceView .

Tienes que restringir tu tamaño de vista previa basado en (1) tamaños de vista previa disponibles (2) en tu vista. Aquí está mi solución si todavía la necesita:

 private class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private Camera mCamera; public CameraPreview(Context context, Camera camera) { super(context); mCamera = camera; // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. mHolder = getHolder(); mHolder.addCallback(this); // deprecated setting, but required on Android versions prior to 3.0 mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } private void startPreview() { try { /** * Orientation should be adjusted, see http://stackoverflow.com/questions/20064793/how-to-fix-camera-orientation/26979987#26979987 */ Camera.Parameters parameters = mCamera.getParameters(); List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); Camera.Size previewSize = null; float closestRatio = Float.MAX_VALUE; int targetPreviewWidth = isLandscape() ? getWidth() : getHeight(); int targetPreviewHeight = isLandscape() ? getHeight() : getWidth(); float targetRatio = targetPreviewWidth / (float) targetPreviewHeight; Log.v(TAG, "target size: " + targetPreviewWidth + " / " + targetPreviewHeight + " ratio:" + targetRatio); for (Camera.Size candidateSize : previewSizes) { float whRatio = candidateSize.width / (float) candidateSize.height; if (previewSize == null || Math.abs(targetRatio - whRatio) < Math.abs(targetRatio - closestRatio)) { closestRatio = whRatio; previewSize = candidateSize; } } Log.v(TAG, "preview size: " + previewSize.width + " / " + previewSize.height); parameters.setPreviewSize(previewSize.width, previewSize.height); mCamera.setParameters(parameters); mCamera.setPreviewDisplay(mHolder); mCamera.startPreview(); } catch (IOException e) { Log.d(TAG, "Error setting camera preview: " + e.getMessage()); } } } 

He arreglado esto añadiendo esto antes de llamar a camera.startPreview ():

 Camera.Parameters parameters = camera.getParameters(); parameters.setPreviewSize(yourSurfaceView.getWidth(), yourSurfaceView.getHeight()); camera.setParameters(parameters); 

Podría ayudar a alguien.

¡La solución es simple! Si utiliza la vista de superficie en la barra de acciones, tal vez el problema. Yo uso esta línea y puedo arreglarlo, pero no pruebo con la barra de acción.

utilizar esta:

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Si está hablando de vista previa, intente configurar el tamaño de SurfaceView igual que el tamaño de vista previa de la cámara. De esta manera la vista previa no se debe escalar.

  • ¿Por qué desaparece un conjunto de imágenes de Android?
  • Cámara en la aplicación de teléfono. Reiniciar la aplicación
  • Cómo revertir la imagen vuelta de la cámara frontal en android?
  • Invisible SurfaceView para previsualización de la cámara
  • Vista previa de la cámara
  • La cámara se enciende tarda más tiempo cuando se inserta en otro hilo
  • La vista previa de la cámara se está estirando
  • Corregir la relación de aspecto y la rotación de la aplicación de la cámara Android
  • Captura de pantalla de SurfaceView
  • Determinación de la resolución de la cámara (es decir, megapíxeles) Programatically in Android
  • Android: ¿Cómo guardar un marco de vista previa como imagen jpeg?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.