Imagen cuadrada con cámara personalizada

Estoy abriendo la cámara usando vista de superficie y vista personalizada. Usando esto soy con éxito capaz de hacer clic en la imagen utilizando uno de los tamaños de getSupportedPictureSizes (). Pero quiero fotos en forma cuadrada. Ahora mismo estoy recortándolo después de hacer clic en la imagen. Es posible en android para mostrar una imagen cuadrada brillante y una superposición oscura en la vista previa de la cámara restante, y al hacer clic, sólo se obtiene una vista previa dentro de la cuadrícula. Esto es posible en el iPhone. Pero no saben cómo hacerlo en android. Cualquier ayuda será muy apreciada.

    Sí, puede superponer un SurfaceView con 2 rectángulos semitransparentes para recortar el cuadrado.

    Debe calcular el efecto de cultivo esperado en la imagen de alta resolución capturada. Por ejemplo, si su cámara admite tamaño de imagen de 4368×2912, tendrá que recortar (mLeft = 728, mTop = 0, mWidth = 2912, mHeight = 2912).

    Para aplicar el recorte personalizado al byte[] Jpeg byte[] recibido de onPictureTaken () , tiene dos opciones: fácil o eficiente.

    La forma más sencilla es decodificar los datos Jpeg a bitmap,

     @Override public void onPictureTaken(final byte[] data, Camera camera) { Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length); picture = Bitmap.createBitmap(picture, mLeft, mTop, mWidth, mHeight); picture.compress(Bitmap.CompressFormat.JPEG, 85, mFileOutputStream); } 

    Los inconvenientes son que puede ser lento y requieren una gran memoria (tal vez 60 MBytes para cámara de 12 MPixel).

    El enfoque "inteligente" es usar la transformación Jpeg Lossless (ver por ejemplo http://mediachest.sourceforge.net/mediautil/ ), usando menos de 10 MBytes. Tenga en cuenta que esto impone algunas restricciones, por ejemplo, en el ejemplo de 12 MPixel cámara anterior, puede necesitar mLeft = 720, porque 728 no es divisible por 16.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.